GridView动态添加一编辑行
来源:互联网 发布:淘宝2000的碳纤维车架 编辑:程序博客网 时间:2024/05/08 23:13
这几天遇到了怎样给GridView动态增加一编辑行的需求,因为之前一直没有碰到过,所以一时也不知道怎么实现。后来通过百度看了一些大神给的解决方案和例子,自己也转载了一篇实现这个功能的博客。方法总的来说,很多也很灵活,有的说用DataTable先取GridView里面的数据,再增加一行,然后再绑定到GridView。有的说用js+table也可以解决。
通过我一下午的努力,照着别人的博客也写了个Demo,严格来说,这种不是点击增加一行,而是给人的错觉是增加一行而已。也就是在GridView下面再加一个同样长的Table,然后对应的列中加入TextBox,再在Table下面增加一个按钮,点击按钮把Table里面的内容存到数据库,然后取出来绑定到GridView中。
下面是我的流程和代码:
1.前台,先加一个GridView控件,再在下面加一个Table,再加一个button
<%--GridView开始--%> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" EmptyDataText="没有记录"> <Columns> <asp:BoundField HeaderText="品牌" DataField="品牌" ItemStyle-Width="100" /> <asp:BoundField HeaderText="价格" DataField="价格" ItemStyle-Width="100" /> <asp:BoundField HeaderText="数量" DataField="数量" ItemStyle-Width="100" /> <asp:BoundField HeaderText="生产日期" DataField="生产日期" DataFormatString="{0:M-dd-yyyy}" ItemStyle-Width="100" /> <asp:BoundField HeaderText="商品详情" DataField="商品详情" ItemStyle-Width="100" /> <asp:BoundField HeaderText="生产地" DataField="生产地" ItemStyle-Width="100" /> </Columns> </asp:GridView> <%--GridView结束--%> <%--Table开始--%> <table border="1" style="border-collapse:collapse;"> <tr> <td> <asp:TextBox ID="TextBox1" runat="server" Width="93"></asp:TextBox> </td> <td> <asp:TextBox ID="TextBox2" runat="server" Width="93"></asp:TextBox> </td> <td> <asp:TextBox ID="TextBox3" runat="server" Width="93"></asp:TextBox> </td> <td> <asp:TextBox ID="TextBox4" runat="server" Width="93"></asp:TextBox> </td> <td> <asp:TextBox ID="TextBox5" runat="server" Width="93"></asp:TextBox> </td> <td> <asp:TextBox ID="TextBox6" runat="server" Width="93"></asp:TextBox> </td> </tr> </table> <%--Table结束--%> <%--Button开始--%> <asp:Button ID="Button1" runat="server" Text="添加" OnClick="Button1_Click" /> <%--Button结束--%>
2.后台代码:
protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { string con = ConfigurationManager.ConnectionStrings["con"].ToString(); SqlConnection sqlcon = new SqlConnection(con); string sql = "select 品牌,价格,数量,商品详情,生产日期,生产地 from Shuma"; sqlcon.Open(); SqlDataAdapter sqlda = new SqlDataAdapter(sql, sqlcon); DataSet ds = new DataSet(); sqlda.Fill(ds); sqlcon.Close(); if(ds.Tables[0].Rows.Count == 0) { DataTable dt = new DataTable(); dt.Columns.Add("品牌"); dt.Columns.Add("价格"); dt.Columns.Add("数量"); dt.Columns.Add("商品详情"); dt.Columns.Add("生产日期"); dt.Columns.Add("生产地"); if(dt.Rows.Count == 0) { dt.Rows.Add(dt.NewRow()); } GridView1.DataSource = dt; GridView1.DataBind(); GridView1.Rows[0].Cells[0].Text = "暂无记录"; GridView1.Rows[0].Cells[1].Text = "暂无记录"; GridView1.Rows[0].Cells[2].Text = "暂无记录"; GridView1.Rows[0].Cells[3].Text = "暂无记录"; GridView1.Rows[0].Cells[4].Text = "暂无记录"; GridView1.Rows[0].Cells[5].Text = "暂无记录"; } else { GridView1.DataSource = ds; GridView1.DataBind(); } } } protected void Button1_Click(object sender, EventArgs e) { string brand = TextBox1.Text.ToString(); int price =Convert.ToInt32(TextBox2.Text); int number = Convert.ToInt32(TextBox3.Text); DateTime productdate = Convert.ToDateTime(TextBox4.Text); string text = TextBox5.Text.ToString(); string place = TextBox6.Text.ToString(); string con = ConfigurationManager.ConnectionStrings["con"].ToString(); SqlConnection sqlcon = new SqlConnection(con); string sql = "insert into Shuma(品牌,价格,数量,商品详情,生产日期,生产地) values('"+brand+"','"+price+"','"+number+"','"+text+"','"+productdate+"','"+place+"')"; string sqlstr = "select 品牌,价格,数量,商品详情,生产日期,生产地 from Shuma"; sqlcon.Open(); SqlCommand sqlcom = new SqlCommand(sql,sqlcon); sqlcom.ExecuteNonQuery(); SqlDataAdapter sqlda = new SqlDataAdapter(sqlstr,sqlcon); DataSet ds = new DataSet(); sqlda.Fill(ds); GridView1.DataSource = ds; GridView1.DataBind(); sqlcon.Close(); } }
3.解释:
针对Page_Load()函数
先从数据库里取数据放到ds(DataSet对象)中。if(ds.Tables[0].Rows.Count==0)用来判断ds中有没有数据。
如果没有,自己新建一个dt(DataTable对象),再在dt中做文章,给它加入列名(这个就对应的GridView的列名),作用是让GridView在没有数据的情况下依旧显示出表头,dt.Rows.Add(dt.NewRow())这句话是用来给它加一个空行。GridView1.Rows[0].Cells[0].Text = "暂无记录"这句话是给新加的空行赋值(告诉用户没有记录)。
如果有,GridView绑定ds,然后显示出来。
针对Button1_Click函数
分两步:
第一步,将TextBox里面的数据存到数据库中。
第二步,将数据库里面的数据取出来绑定到GridView然后显示出来。
综上所述,这种方法并不是真的增加一行,只是让用户觉得增加一行而已或者让用户始终感觉有可以输入的行。
- GridView动态添加一编辑行
- 动态添加gridview行
- 动态添加gridview行
- gridview动态添加行
- Gridview:在进入编辑模式后动态添加控件
- GridView添加编辑模板
- GridView实现添加,编辑,删除
- GridView动态添加行(提供源代码)
- GridView动态进行行添加和删除
- GridView 动态添加列
- gridview动态添加列
- 动态添加GridView模板
- gridview动态添加按钮
- gridView动态添加列
- GridView动态添加列
- 编辑多行 GridView
- 使用GridView添加,删除,编辑记录
- 关于gridview如何添加编辑删除
- 高性能 Socket 组件 HP-Socket v3.1.3 正式发布
- Eclipse 编码
- dhcp软件安装脚本
- debian7(wheezy)之virtualbox安装与配置
- ZOJ3716 Ribbon Gymnastics(贪心)
- GridView动态添加一编辑行
- 内核编译错误提示
- select timeout or -1
- 小米2S MI2S eclipse adb连接不上手机,解决办法
- ReentrantReadWriteLock读写锁的使用
- 简单的文件系列函数,包装成类,学习文件处理中。。。。
- ResultSet需要注意的问题
- ScroolView卷轴视图
- 生产者消费者问题理解与Java实现