关于利用DataGrid进行数据查询、修改操作

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();
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值