在DataGrid控件中實現對某一項得編輯,取消編輯,保存新得內容,實現這樣得功能是在DataGrid控件中的按鈕列中有一種”編輯,更新,取消類型,這3個按鈕分別觸發DataGrid控件的EditCommand,UpDateCommand以及CanelCommand事件,從而可以完成對指定項的編輯,更新和取消編輯的功能.
前台代碼為:
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="新細明體">
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 120px; POSITION: absolute; TOP: 120px"
runat="server" Width="592px" Height="120px" AutoGenerateColumns="False" DataKeyField="id">
<Columns>
<asp:TemplateColumn HeaderText="中文姓名">
<HeaderStyle Width="150px"></HeaderStyle>
<ItemTemplate>
<asp:Label id=Label1 runat="server" Height="8px" Width="160px" Text='<%# DataBinder.Eval(Container, "DataItem.中文姓名") %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="NT">
<HeaderStyle Width="150px"></HeaderStyle>
<ItemTemplate>
<asp:DropDownList id=DropDownList1 runat="server" Height="32px" Width="128px" DataSource="<%#BindTheTitle()%>" DataTextField="nt" DataValueField="nt">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="部門名稱">
<ItemTemplate>
<asp:TextBox id=TextBox1 runat="server" Width="136px" Text='<%# DataBinder.Eval(Container, "DataItem.部門名稱") %>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" CancelText="取消" EditText="編輯">
<HeaderStyle Width="200px"></HeaderStyle>
</asp:EditCommandColumn>
</Columns>
</asp:DataGrid></FONT>
</form>
</body>
後台代碼為:
private void Page_Load(object sender, System.EventArgs e)
{
// 在這裡放置使用者程式碼以初始化網頁
if(!this.IsPostBack)
{
lianjie();
}
}
#region Web Form 設計工具產生的程式碼
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 此為 ASP.NET Web Form 設計工具所需的呼叫。
//
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 lianjie()
{
string sql="select * from elogin1 ";
SqlConnection conn=new SqlConnection(ConfigurationSettings.AppSettings["connstr"].ToString());
SqlDataAdapter da=new SqlDataAdapter(sql,conn);
DataSet ds=new DataSet();
da.Fill(ds);
if(ds.Tables[0].Rows.Count>0)
{
this.DataGrid1.DataSource=ds;
this.DataGrid1.DataBind();
}
}
private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//設置DataGrid控件編輯項的索引為-1,即取消編輯
this.DataGrid1.EditItemIndex=-1;
//重新進行數據綁定
lianjie();
}
public SqlDataReader BindTheTitle()
{
SqlConnection conn=new SqlConnection(ConfigurationSettings.AppSettings["connstr"].ToString());
SqlCommand cmd=new SqlCommand("select top 5 nt from elogin1",conn);
conn.Open();
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//設置DataGrid控件編輯項的索引為當前的索引
this.DataGrid1.EditItemIndex =e.Item.ItemIndex;
lianjie();
// string sql1="select * from elogin1 ";
// SqlConnection conn1=new SqlConnection(ConfigurationSettings.AppSettings["connstr"].ToString());
// SqlDataAdapter da=new SqlDataAdapter(sql1,conn1);
// DataSet ds=new DataSet();
// da.Fill(ds);
// this.DataGrid1.DataSource=ds;
// this.DataGrid1.DataBind();
}
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//取得編輯行的關鍵字段的值
int empid =(int)this.DataGrid1.DataKeys[e.Item.ItemIndex];
//取得文本框中輸入的內容,如果使用數據綁定列((TextBox)e.Item.Cells[2].Controls[0].Text方式取得
TextBox newtext=(TextBox)e.Item.FindControl("TextBox1");
//定義SQL
string sql="update elogin1 set 部門名稱 ='"+newtext.Text+"' where id='"+empid.ToString()+"'";
SqlConnection conn=new SqlConnection(ConfigurationSettings.AppSettings["connstr"].ToString());
SqlCommand cmd=new SqlCommand(sql,conn);
//打開數據庫
conn.Open();
try
{
//執行SQL
cmd.ExecuteNonQuery();
//取消編輯
this.DataGrid1.EditItemIndex=-1;
lianjie();
// string sql1="select * from elogin1 ";
// SqlConnection conn1=new SqlConnection(ConfigurationSettings.AppSettings["connstr"].ToString());
// SqlDataAdapter da=new SqlDataAdapter(sql1,conn1);
// DataSet ds=new DataSet();
// da.Fill(ds);
// this.DataGrid1.DataSource=ds;
// this.DataGrid1.DataBind();
}
catch(Exception err)
{
//輸出異常信息
Response.Write(err.ToString());
}
finally
{
conn.Close();
}
}
}