亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 添加新行.txt

?? 學習c#語言的一本好書可以幫助初學者
?? TXT
字號:
插入行不是DataGrid控件功能的一部分。

窗體插仍是最好的方式。

在有限列時這種方式更適合。

最后一頁時,增加一行的按鈕才可用。

正確的設置CurrentPageIndex和EditIndex是很關鍵的

DataSet在修、增、刪時,狀態會變成DataRowState中的一個(Added,Modified,Deleted)
使受影響的行掛起。
掛起的更改可以在任何級別(DataSet,DataTable,DataRow)上接受或拒絕

DataRow dr=dt.Rows[dt.Rows.Count-1];
dt.AcceptChanges();//接受改變,清除更改的掛起狀態
dt.RejectChanges();//拒絕改變
1.頁面
<%@ Page language="c#" Codebehind="MyForm433.aspx.cs" AutoEventWireup="false" Inherits="Co_411.MyForm433" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
	<HEAD>
		<title>MyForm411</title>
		<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
		<meta content="C#" name="CODE_LANGUAGE">
		<meta content="JavaScript" name="vs_defaultClientScript">
		<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
	</HEAD>
	<body MS_POSITIONING="GridLayout">
		<form id="Form1" method="post" runat="server">
			<FONT face="宋體">
				<asp:datagrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 144px; POSITION: absolute; TOP: 184px"
					runat="server" AutoGenerateColumns="False" DataKeyField="employeeid" ShowFooter="True" AllowPaging="True">
					<EditItemStyle Font-Bold="True" BackColor="Blue"></EditItemStyle>
					<Columns>
						<asp:BoundColumn DataField="employeeid" ReadOnly="True" HeaderText="ID"></asp:BoundColumn>
						<asp:TemplateColumn HeaderText="Employee Name">
							<ItemTemplate>
								<asp:Label id="Label1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"LastName") %>'>
								</asp:Label>
							</ItemTemplate>
							<FooterTemplate>
								<asp:LinkButton id="LinkButton1" onclick="AddNewRow" runat="server" Enabled='<%# IsLastPage() %>'>Add new row...</asp:LinkButton>
							</FooterTemplate>
						</asp:TemplateColumn>
						<asp:BoundColumn DataField="title" HeaderText="Position"></asp:BoundColumn>
						<asp:BoundColumn DataField="country" HeaderText="From"></asp:BoundColumn>
						<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="&lt;img src=ok.ico border=0 align=absmiddle alt='Save changes'&gt;"
							CancelText="&lt;img src=cancel.ico border=0 align=absmiddle alt='Cancel changes'&gt;" EditText="&lt;img src=edit.ico border=0 align=absmiddle alt='Edit this item'&gt;">
							<ItemStyle HorizontalAlign="Center" BackColor="Yellow"></ItemStyle>
						</asp:EditCommandColumn>
					</Columns>
					<PagerStyle Mode="NumericPages"></PagerStyle>
				</asp:datagrid>
				<asp:Label id="lblCurrent" style="Z-INDEX: 102; LEFT: 144px; POSITION: absolute; TOP: 152px"
					runat="server">Label</asp:Label>
				<asp:Label id="Label2" style="Z-INDEX: 103; LEFT: 64px; POSITION: absolute; TOP: 64px" runat="server">增加一個新行</asp:Label></FONT></form>
	</body>
</HTML>
2.代碼
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Text;
namespace Co_411
{
	/// <summary>
	/// 增加編輯。
	/// 說明
	/// ViewState["OptState"]用于記錄當的的操作
	/// 0-顯示
	/// 1-添加
	/// 2-編輯
	/// 3-刪除
	/// </summary>
	public class MyForm433 : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.Label lblCurrent;
		protected System.Web.UI.WebControls.DataGrid DataGrid1;
		protected System.Web.UI.WebControls.Label Label2;
	
		private void Page_Load(object sender, System.EventArgs e)
		{
			if(!Page.IsPostBack)
			{
//				this.DataGrid1.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_CancelCommand);
//				this.DataGrid1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditCommand);
//				this.DataGrid1.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_UpdateCommand);
//				this.Load += new System.EventHandler(this.Page_Load);
				Display();
			}
		}
		private void Display()
		{
			string strConn,strCmd;
			strConn="server=localhost;uid=sa;pwd=;database=Northwind";
			strCmd="Select employeeid,titleofcourtesy,firstname,lastname,title,country From employees";
			SqlDataAdapter oCMD=new SqlDataAdapter(strCmd,strConn);
			DataSet oDS=new DataSet();
			oCMD.Fill(oDS,"MyList");
			DataTable dt=oDS.Tables["MyList"];				
			DataGrid1.DataSource=oDS.Tables["MyList"];
			DataGrid1.DataBind();
			Session["MyDataSet"]=oDS;//保存數據集
			oDS.Dispose();
			oDS=null;
			oCMD.Dispose();
			oCMD=null;
		}

		#region Web 窗體設計器生成的代碼
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// 設計器支持所需的方法 - 不要使用代碼編輯器修改
		/// 此方法的內容。
		/// </summary>
		private void InitializeComponent()
		{    
			this.DataGrid1.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_CancelCommand);
			this.DataGrid1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditCommand);
			this.DataGrid1.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_UpdateCommand);
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion

		private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
		{

			ViewState["OptState"]=2;//編輯模式			
			DataGrid1.EditItemIndex=e.Item.ItemIndex;
			UpdateView();
		}
		//增加一條記錄
		private void AddRecord(DataGridCommandEventArgs e)
		{
			//檢索新的文本
			int nColPositionInex=2;//從0開始始列的位置
			int nColFromIndex=3;
			TextBox txtPosition,txtFrom;
			txtPosition=(TextBox)e.Item.Cells[nColPositionInex].Controls[0];
			txtFrom=(TextBox)e.Item.Cells[nColFromIndex].Controls[0];

			//SQL Server 連接字串
			string strConn;
			strConn="server=localhost;uid=sa;pwd=;database=Northwind";
			SqlConnection conn=new SqlConnection(strConn);

			DataSet ds=(DataSet)Session["MyDataSet"];
			DataTable dt=ds.Tables["MyList"];
			DataRow drLast=dt.Rows[dt.Rows.Count-1];
			if(drLast.RowState==DataRowState.Added)
			{

				//更新數據源
				SqlCommand cmd=new SqlCommand("MySampleInsert",conn);
				cmd.CommandType=CommandType.StoredProcedure;
				SqlParameter p1,p2,po1;

				//設置Position參數以傳遞新值
				p1=new SqlParameter("@sPosition",SqlDbType.NVarChar,30);
				p1.Direction=ParameterDirection.Input;
				p1.Value=txtPosition.Text;
				cmd.Parameters.Add(p1);
				//設置Country參數以傳遞新值
				p2=new SqlParameter("@sCountry",SqlDbType.NVarChar,15);
				p2.Direction=ParameterDirection.Input;
				p2.Value=txtFrom.Text;
				cmd.Parameters.Add(p2);
				//輸出參數以得到Position的新值
				po1=new SqlParameter("@NewEmpID",SqlDbType.Int);
				po1.Direction=ParameterDirection.Output;
				cmd.Parameters.Add(po1);
				//執行這個過程
				conn.Open();
				cmd.ExecuteNonQuery();
				conn.Close();
				//更新緩沖
				UpdateCacheAdd((string)p1.Value,(string)p2.Value,(int)po1.Value);
				lblCurrent.Text="增加成功!";
			}
		}
		//編輯一條記錄
		private void EditRecord(DataGridCommandEventArgs e)
		{
			//檢索新的文本
			int nColPositionInex=2;//從0開始始列的位置
			int nColFromIndex=3;
			TextBox txtPosition,txtFrom;
			txtPosition=(TextBox)e.Item.Cells[nColPositionInex].Controls[0];
			txtFrom=(TextBox)e.Item.Cells[nColFromIndex].Controls[0];

			//SQL Server 連接字串
			string strConn;
			strConn="server=localhost;uid=sa;pwd=;database=Northwind";
			SqlConnection conn=new SqlConnection(strConn);

			//更新數據源
			SqlCommand cmd=new SqlCommand("MySampleUpdate",conn);
			cmd.CommandType=CommandType.StoredProcedure;
			SqlParameter p1,p2,p3,po1,po2;
			//設置EmployeeID參數以標識要更新的行
			p1=new SqlParameter("@nEmpID",SqlDbType.Int);
			p1.Direction=ParameterDirection.Input;
			p1.Value=DataGrid1.DataKeys[e.Item.ItemIndex];
			cmd.Parameters.Add(p1);
			//設置Position參數以傳遞新值
			p2=new SqlParameter("@sPosition",SqlDbType.NVarChar,30);
			p2.Direction=ParameterDirection.Input;
			p2.Value=txtPosition.Text;
			cmd.Parameters.Add(p2);
			//設置Country參數以傳遞新值
			p3=new SqlParameter("@sCountry",SqlDbType.NVarChar,15);
			p3.Direction=ParameterDirection.Input;
			p3.Value=txtFrom.Text;
			cmd.Parameters.Add(p3);
			//輸出參數以得到Position的新值
			po1=new SqlParameter("@NewPosition",SqlDbType.NVarChar,30);
			po1.Direction=ParameterDirection.Output;
			cmd.Parameters.Add(po1);
			//輸出參數以得到Country的新值
			po2=new SqlParameter("@NewCountry",SqlDbType.NVarChar,30);
			po2.Direction=ParameterDirection.Output;
			cmd.Parameters.Add(po2);
			//執行這個過程
			conn.Open();
			cmd.ExecuteNonQuery();
			conn.Close();
			//更新緩沖
			UpdateCacheEdit((int)p1.Value,(string)po1.Value,(string)po2.Value);
		}
		//保存命令
		private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
		{			
			if(ViewState["OptState"]!=null)
			{

				if((int)ViewState["OptState"]==1)//增加
				{
					AddRecord(e);
				}	
				else if((int)ViewState["OptState"]==2)//編輯
				{
					EditRecord(e);
				}
				else //其它
				{
				
				}
					
			}
			//恢復呈現狀態
			DataGrid1.EditItemIndex=-1;
			UpdateView();
		}
		//更新緩沖(編輯)
		private void UpdateCacheEdit(int nEmpID,string sNewPosition,string sNewCountry)
		{
			//從會話或其它緩沖它的地方檢索網格的數據源
			DataSet ds=(DataSet)Session["MyDataSet"];
			DataTable dt=ds.Tables["MyList"];
			//根據主鍵檢索要更新的行
			//應該只有一行
			DataRow[] adr=dt.Select("employeeid="+nEmpID);
			//更新這一行并用DataTable持久保留這個改變
			adr[0]["title"]=sNewPosition;
			adr[0]["country"]=sNewCountry;
			dt.AcceptChanges();
			//緩沖更新的DataSet以例將來使用
			Session["MyDataSet"]=ds;
		}
		//更新緩沖(增加)
		private void UpdateCacheAdd(string sNewPosition,string sNewCountry,int nEmpID)
		{
			//從會話或其它緩沖它的地方檢索網格的數據源
			DataSet ds=(DataSet)Session["MyDataSet"];
			DataTable dt=ds.Tables["MyList"];
			//根據主鍵檢索要更新的行
			//應該只有一行
			DataRow dr=dt.Rows[dt.Rows.Count-1];
			//更新這一行并用DataTable持久保留這個改變
			dr["employeeid"]=nEmpID;
			dr["title"]=sNewPosition;
			dr["country"]=sNewCountry;
			dt.AcceptChanges();//接受改變
			//緩沖更新的DataSet以例將來使用
			Session["MyDataSet"]=ds;
		}
		//最新狀態顯示
		private void UpdateView()
		{
			DataSet ds=(DataSet)Session["MyDataSet"];
			DataView dv=ds.Tables["MyList"].DefaultView;
			DataGrid1.DataSource=dv;
			DataGrid1.DataBind();
		}

		private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
		{
			//取消更新
			DataGrid1.EditItemIndex=-1;
			DataSet ds=(DataSet)Session["MyDataSet"];
			DataTable dt=ds.Tables["MyList"];
			DataRow drLast=dt.Rows[dt.Rows.Count-1];
			if(drLast.RowState==DataRowState.Added)
			{
				drLast.RejectChanges();//拒絕改變				
				if(DataGrid1.Items.Count==1)//如果拒絕的行是當前頁的唯一行,那么就移到前一頁
					DataGrid1.CurrentPageIndex--;
			}
			UpdateView();
		}
		public bool IsLastPage()
		{
			if(DataGrid1.CurrentPageIndex+1==DataGrid1.PageCount)
			{
				return true;
			}
			return false;
		}
		//在網格中增加一行(默認的網格控件沒有提供)
		public void AddNewRow(object sender,EventArgs e)
		{
			//得到緩存的數據集
			DataSet ds=(DataSet)Session["MyDataSet"];
			DataTable dt=ds.Tables["MyList"];
			//添加空行
			DataRow dr=dt.NewRow();
			dt.Rows.Add(dr);
			//如果需要指定默認值
			dr["employeeid"]=-1;//用負值填充自動增量字段,并用特殊繪制這一行
			//更新內存中的DataSet
			Session["MyData"]=ds;
			//頁中新項的索引:當前的項數
			int nNewItemIndex=DataGrid1.Items.Count;
			
			if(nNewItemIndex>=DataGrid1.PageSize)
			{
				//新行是新頁的第一行
				DataGrid1.CurrentPageIndex++;
				nNewItemIndex=0;
			}
			
			ViewState["OptState"]=1;
			DataGrid1.EditItemIndex=nNewItemIndex;//為新行打開編輯模式
			UpdateView();
		}

	}
}
3.存儲過程
Create Procedure MySampleInsert(
	@sPosition nvarchar(30),          --用于更新Title字段的值
	@sCountry nvarchar(15),           --用于更新Country的值
	@NewEmpID int output)  --返回Employeeid當前值
As
Insert employees (Title,Country) VALUES
	(@sPosition,@sCountry)
Select top 1 @NewEmpID=employeeid
	From Employees Order by employeeid desc

GO

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产色爱av资源综合区| 精品播放一区二区| 国产一区二区三区| 亚洲欧美一区二区不卡| 欧美mv日韩mv亚洲| 欧美在线不卡一区| 91在线精品秘密一区二区| 麻豆免费看一区二区三区| 一区二区三区四区亚洲| 久久无码av三级| 欧美一区二区三区四区高清| 色猫猫国产区一区二在线视频| 麻豆精品新av中文字幕| 一个色在线综合| 中文字幕中文字幕在线一区| 欧美成人精品二区三区99精品| 色香蕉久久蜜桃| www.欧美.com| 成人综合在线网站| 国产激情视频一区二区三区欧美| 免费成人在线观看| 日韩精品电影一区亚洲| 一区二区三区在线影院| 国产精品成人在线观看| 国产精品你懂的在线欣赏| 2021久久国产精品不只是精品| 欧美日本精品一区二区三区| 欧美亚洲愉拍一区二区| 欧美在线观看你懂的| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 精品免费一区二区三区| 欧美精品色综合| 欧美丝袜第三区| 在线亚洲+欧美+日本专区| 99视频精品免费视频| 成人福利视频在线| 成人性视频免费网站| 国产91露脸合集magnet| 高清不卡一二三区| 粉嫩av一区二区三区| 成人综合激情网| jizzjizzjizz欧美| 91女神在线视频| 欧洲一区二区三区免费视频| 91国偷自产一区二区开放时间| 日本丶国产丶欧美色综合| 91激情在线视频| 欧美日韩在线综合| 欧美二区乱c少妇| 日韩三区在线观看| 精品999在线播放| 久久看人人爽人人| 日韩美女视频一区| 一区二区三区久久久| 亚洲国产va精品久久久不卡综合| 亚洲aⅴ怡春院| 蜜桃视频在线观看一区二区| 九色综合狠狠综合久久| 国产aⅴ综合色| 色哟哟一区二区在线观看| 欧美美女一区二区三区| 日韩一区二区电影| 欧美经典一区二区| 亚洲精品成人悠悠色影视| 亚洲午夜一区二区| 激情欧美日韩一区二区| av一区二区三区在线| 在线观看亚洲一区| 欧美大尺度电影在线| 日本一区二区免费在线观看视频| 亚洲欧洲制服丝袜| 久久精品国产77777蜜臀| 成人小视频在线观看| 欧美色欧美亚洲另类二区| 欧美一区二区三区爱爱| 中文字幕免费观看一区| 亚洲一区免费观看| 国产曰批免费观看久久久| 97se亚洲国产综合自在线不卡| 欧美美女视频在线观看| 久久蜜桃香蕉精品一区二区三区| 亚洲欧美色图小说| 久久国产视频网| 91看片淫黄大片一级在线观看| 欧美巨大另类极品videosbest| 久久午夜色播影院免费高清| 亚洲一本大道在线| 国产成人av一区二区三区在线观看| 91久久线看在观草草青青| 欧美不卡视频一区| 一区二区成人在线视频| 国产一区二区三区国产| 欧美三级欧美一级| 国产精品美女一区二区在线观看| 三级不卡在线观看| 色婷婷久久久久swag精品| 欧美r级电影在线观看| 一级女性全黄久久生活片免费| 国产高清精品网站| 91精品国产福利| 亚洲黄色性网站| 成人夜色视频网站在线观看| 欧美成人猛片aaaaaaa| 亚洲一区二区中文在线| 盗摄精品av一区二区三区| 日韩一区二区在线看| 亚洲色图欧洲色图| 国产成人高清视频| 亚洲精品一区二区三区蜜桃下载| 午夜精品久久久久| 色网站国产精品| 国产精品五月天| 国内精品久久久久影院一蜜桃| 欧美日韩免费电影| 一区二区在线观看视频| 成人免费高清视频在线观看| 久久综合99re88久久爱| 免费成人小视频| 欧美猛男gaygay网站| 亚洲综合色网站| 91免费视频大全| 亚洲少妇屁股交4| 99精品偷自拍| 国产精品久久久久久久蜜臀| 国产精品一区二区三区网站| 日韩欧美区一区二| 日韩av一区二区三区| 欧美久久久久中文字幕| 亚洲国产视频在线| 欧美日韩一区二区在线观看| 亚洲精品国产a久久久久久| 一本久久a久久精品亚洲| 国产精品成人一区二区三区夜夜夜 | 欧美一级一级性生活免费录像| 亚洲va欧美va天堂v国产综合| 色94色欧美sute亚洲线路二 | 4438x成人网最大色成网站| 亚洲精品videosex极品| 一本久道久久综合中文字幕| 一区二区三区四区不卡在线| 色天天综合色天天久久| 一区二区在线观看视频在线观看| 色狠狠桃花综合| 亚洲超碰精品一区二区| 日韩小视频在线观看专区| 蜜桃91丨九色丨蝌蚪91桃色| 日韩欧美另类在线| 国产精品一区二区男女羞羞无遮挡 | 欧美日韩一级片在线观看| 亚洲一级二级在线| 欧美高清视频一二三区| 免费成人在线影院| 国产欧美一区二区三区沐欲| 成人免费观看视频| 亚洲一区二区三区四区在线| 欧美日韩一级片网站| 免费久久精品视频| 国产欧美一区二区三区鸳鸯浴| a亚洲天堂av| 亚洲电影你懂得| 精品欧美久久久| 99国产欧美久久久精品| 亚洲成人久久影院| 精品国产精品网麻豆系列| 粉嫩绯色av一区二区在线观看| 亚洲欧美激情在线| 欧美一级欧美三级在线观看 | 成人黄动漫网站免费app| 亚洲免费在线电影| 欧美一区二区女人| 成人国产精品免费观看| 亚洲va欧美va天堂v国产综合| 久久色在线观看| 在线一区二区三区四区五区| 日本特黄久久久高潮| 欧美高清一级片在线观看| 91成人在线免费观看| 国产在线麻豆精品观看| 亚洲另类一区二区| 日韩欧美三级在线| 91福利在线观看| 国产一区在线观看视频| 一区二区三区不卡在线观看| 精品久久久久久无| 在线亚洲一区二区| 国产白丝精品91爽爽久久 | 国产91丝袜在线18| 日韩电影免费在线看| 国产精品国产馆在线真实露脸| 欧美一区二区视频在线观看2022| 成人黄色在线视频| 精品一区二区久久久| 亚洲一区视频在线| 亚洲欧洲精品一区二区三区不卡| 日韩欧美色综合| 欧美日韩一区二区在线观看视频| 成人avav影音| 国产一区二区伦理| 亚洲电影视频在线| 亚洲另类一区二区|