1、页面的画面如下所示:
首先看相关的DataGrid的HTML代码:
<asp:DataGrid id="DataGrid1" runat="server" DataKeyField="customerid" autoGenerateColumns="False" Width="100%">
<Columns>
<asp:TemplateColumn HeaderText="公司名称">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"companyname")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID=companyname Runat=server Text='<%# DataBinder.Eval(Container.DataItem,"companyname")%>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<!--…………其它相关列`-->
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" HeaderText="修改" CancelText="取消" EditText="编辑">
<HeaderStyle Width="70px"></HeaderStyle>
</asp:EditCommandColumn>
</Columns>
</asp:DataGrid>
注意:红色代码是关键,必须要写上。
然后,在后台采生如下几个事件
(1)EditCommand事件,该事件在按“编辑”按钮时产生。
代码如下:
private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
this.DataGrid1.EditItemIndex=e.Item.ItemIndex;
BindDB();
}
其中BindDB()是一个私有方法,代码如下:
private void BindDB()
{
string constr="server=localhost;database=northwind;user id=sa;password=123456";
SqlConnection mycon=new SqlConnection(constr);
SqlDataAdapter myad=new SqlDataAdapter("select * from customers ",mycon);
DataSet myds=new DataSet();
myad.Fill(myds);
this.DataGrid1.DataSource=myds.Tables[0];
this.DataGrid1.DataBind();
}
2、CancelCommand事件,该事件在按下“取消”按钮时产生。
代码如下:
private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
this.DataGrid1.EditItemIndex=-1;
BindDB();
}
3、UpdateCommand事件,该事件在按下“刷新”按钮时生产,也是最主要的一个功能按钮。
具体代码如下:
private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string constr="server=localhost;database=northwind;user id=sa;password=yulijie";
SqlConnection mycon=new SqlConnection(constr);
TextBox CompanyName=(TextBox)e.Item.FindControl("companyname");
TextBox City=(TextBox)e.Item.FindControl("city");
TextBox ContactName=(TextBox)e.Item.FindControl("contactname");
TextBox Address=(TextBox)e.Item.FindControl("address");
string updatestr="update customers set companyname=@companyname,contactname=@contactname,city=@city,address=@address where customerid=@customerid";
SqlCommand myCommand=new SqlCommand(updatestr,mycon);
myCommand.Parameters.Add("@companyname",SqlDbType.VarChar,40);
myCommand.Parameters.Add("@contactname",SqlDbType.VarChar,30);
myCommand.Parameters.Add("@city",SqlDbType.VarChar,15);
myCommand.Parameters.Add("@address",SqlDbType.VarChar,60);
myCommand.Parameters.Add("@customerid",SqlDbType.VarChar,6);
myCommand.Parameters["@companyname"].Value=CompanyName.Text.Trim();
myCommand.Parameters["@contactname"].Value=ContactName.Text.Trim();
myCommand.Parameters["@city"].Value=City.Text.Trim();
myCommand.Parameters["@address"].Value=Address.Text.Trim();
myCommand.Parameters["@customerid"].Value=Convert.ToString(this.DataGrid1.DataKeys[e.Item.ItemIndex]);
mycon.Open();
try
{
myCommand.ExecuteNonQuery();
}
catch(SqlException e1)
{
Response.Write(e1.Message);
}
mycon.Close();
this.DataGrid1.EditItemIndex=-1;
this.BindDB();
}