这几天遇到了怎样给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动态添加一编辑行相关推荐

  1. GridView动态添加模版列

    由于GridView如果动态添加模版列的话,在页面做其他事件时GridView又变为初始状态,所以需要在页面On_InIt里动态绑定上 using System; using System.Colle ...

  2. GridView动态添加Templete项

    最近的碰到一个问题,就是GridView后台怎样动态添加Templete项.比方说,有个BankCardChangeManage.aspx页面,其中的GridView显示的要求是一些公用的项,比如&q ...

  3. GridView动态添加列并判断绑定数据DataTable的列类型控制展示内容

    此篇随笔是2013年根据项目需求开发记录的,不一定符合大众口味,只需了解开发思路,毕竟解决方案多种多样. 下面简单说说需求点吧: (1)通过下拉列表可以选择一个DataSet(数据集),一个DataS ...

  4. javascript动态添加删除行后行内计算及取值

    只要ID加入对应序号即可,name值不变,行内计算根据ID定位,取name值. 先隐藏一个input并赋值,<input name='lastindex' type='hidden' id='l ...

  5. ASP.NET 2.0 中动态添加 GridView 模板列

      ASP.NET 2.0 中动态添加 GridView 模板列的例子 动态添加列,关键是实现 ITemplate.InstantiateIn 方法.下面是一个添加 GridView 模板列的例子. ...

  6. ASP.NET 2.0 中动态添加 GridView 模板列的...

    framespacing="0" src="http://what.yesky.com/by/ztdh.htm" frameborder="0&quo ...

  7. 动态添加TemplateField列

    GridViewTextTemplate类: using System; using System.Collections.Generic; using System.Linq; using Syst ...

  8. element-ui添加动态表格并合计行合并行操作

    项目开发过程中,我们有时候会遇到表格里面数据进行动态添加修改删除的操作,表格里面我们也会经常遇到合并单元格和合计累加计算行的数据.这里我们就简单的记录一下实际场景的运用! 最终实现的效果图如下: 注意 ...

  9. C# DataGridView控件动态添加新行

    目录 方法一: 方法二: ① DataGridView 取得或者修改当前单元格的内容: ② DataGridView 设定单元格只读: ③ DataGridView 不显示最下面的新行: ④ Data ...

最新文章

  1. 我什么时候应该使用结构而不是类?
  2. PAT甲级1092 To Buy or Not to Buy :[C++题解]哈希表
  3. 创智播客微服务_【传智播客】JavaEE在职加薪课
  4. python将图片转化为字符图
  5. python可以直接打印中午吗_Python print不能立即打印的解决方式
  6. MUI H5+ APP 分享H5连接 通过scheme唤醒APP
  7. 【数据科学】 推荐一个更高效的数据清洗方法,建议收藏
  8. fiddler抓包工具简介
  9. nginx 反向proxy多个 tomcat,负载均衡
  10. Caddy,一个用Go实现的Web Server | 比Apache速度快,比Nginx有个性
  11. 不能忍!世界首富贝索斯发博文称遭”不雅照”威胁
  12. 自然语言3——官网介绍
  13. knife4j--api请求参数不一致问题
  14. 蓝桥杯2016年第七届C/C++省赛B组第一题-煤球数目
  15. sqlplus / as sysdba ORA-01017
  16. 1.3端口扫描:利用Nmap工具进行端口扫描
  17. 禁止cmd dos 窗口被关闭
  18. 【李峋同款爱心加照片】
  19. word的小方框如何在里面打上对勾
  20. Vue源码流程图(函数名与源码对应)

热门文章

  1. EditPlus苦战 dynamic的API
  2. 项目经理的时间管理法则
  3. 【ESP32】13.DS18B20温度传感器实验(OneWire和DallasTemperature库)
  4. H5入门四:CSS选择的艺术
  5. 恶意软件检测技术综述
  6. Win10 1809 Hexo+github搭建个人博客
  7. React-服务器端渲染
  8. 数据可视化--绘制百分比堆积柱状图、簇形柱状图、并列子图
  9. 淘宝补单打造爆款方法
  10. UltraEdit文本编辑器丨功能介绍