C# .net GridView编辑行数据

C# .net GridView编辑行数据

比较原始的编辑功能,只能在数据量小的时候用,数据一多体验就很不好,但还是记录一下吧。
原理就是用label和textbox两个控件绑定同一列数据,点编辑就显示textbox,平时显示label
前端

    <asp:GridView ID="grid_01"  runat="server" DataKeyNames="col3" OnRowDataBound="grid_01_RowDataBound" AutoGenerateColumns="False"   OnRowEditing="grid_01_RowEditing" OnRowCancelingEdit="grid_01_RowCancelingEdit"
     onrowupdating="grid_01_RowUpdate" AutoGenerateEditButton="true" ShowHeader="true" >
                      <Columns>              
                      
                          <asp:TemplateField  ShowHeader="true" HeaderText="PHASE" >
                            <ItemTemplate>
                                <asp:Label ID="lable_col1" runat="server" Text='<%# Bind("col1") %>'>
                                </asp:Label>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:TextBox ID="text_col1" runat="server" Text='<%# Bind("col1") %>' />
                            </EditItemTemplate>
                        </asp:TemplateField>
                        
                        <asp:TemplateField   ShowHeader="true" HeaderText="col2" >
                            <ItemTemplate>
                                <asp:Label ID="lable_col2" runat="server" Text='<%# Bind("col2") %>'></asp:Label>
                                 </ItemTemplate>
                                <EditItemTemplate>
                                <asp:TextBox ID="text_col2" runat="server" Text='<%# Bind("col2") %>'  />
                                </EditItemTemplate>
                        </asp:TemplateField>
                        
                        <asp:TemplateField ShowHeader="true" HeaderText="col3">
                            <ItemTemplate>
                                <asp:Label ID="lable_col3" runat="server" Text='<%# Bind("col3") %>'></asp:Label>
                                </ItemTemplate>
                                <EditItemTemplate>
                                <asp:TextBox ID="text_col3" runat="server" Text='<%# Bind("col3") %>'  />
                            </EditItemTemplate>
                        </asp:TemplateField>
                        
                    </Columns>
                </asp:GridView>

后端

//全局变量,数据库连接
SqlConnection DB = new SqlConnection(WebConfigurationManager.AppSettings["key1"].ToString());
  protected void grid_01_RowEditing(object sender, GridViewEditEventArgs e)
        {
            EditStatus = 1;    //用来判断是否处在编辑状态,在改变单元格颜色时用到,可以不用
            grid_01.EditIndex = e.NewEditIndex;
            BindData(4);   //没有绑定数据则需要点击两次,调用你自己的gridview绑定方法,这点略坑……
        }

        protected void grid_01_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            EditStatus = 0;
            grid_01.EditIndex = -1;
            BindData(4);
        }

        protected void grid_01_RowUpdate(object sender, GridViewUpdateEventArgs e)
        {
			//获取编辑框值
            string Newcol1 = ((TextBox)grid_01.Rows[e.RowIndex].Cells[0].FindControl("text_col1")).Text.Trim();       
            string Newcol2 = ((TextBox)grid_01.Rows[e.RowIndex].Cells[1].FindControl("text_col2")).Text.Trim();
            string Newcol3 = ((TextBox)grid_01.Rows[e.RowIndex].Cells[2].FindControl("text_col3")).Text.Trim();
           //中间可以放判断编辑的字符是否符合规则,我就省了
            try
            {
                DB.Open();
                string SqlUpdate = @"update table1 set col1='" + Newcol1 + "',col2='" + Newcol2 + "' where col3='" + col3+ "'";
                //根据col3来更新数据库
                SqlCommand cmdUpdate = new SqlCommand(SqlUpdate, DB);
                cmdUpdate.ExecuteNonQuery();
                DB.Close();
                Response.Write("<script>alert('更新成功!')</script>");
            }
            catch {
                EditStatus = 0;
                Response.Write("<script>alert('更新失败!')</script>");
            }
            EditStatus = 0;
            grid_01.EditIndex = -1;
            BindData(4);
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值