放飞你的梦想--翱翔我的天空 | 会员登陆 | 繁體中文 | 站点地图 | 站长博客
 | 网站首页 | 文章中心 | IT 前沿 | 清怡画风 | 视频教程 | 资源下载 | 精彩图库 | 博客文赏 | 天空论坛 | 访客留言 | 音乐版 | 
    本站全新推出IT 前沿频道欢迎大家访问 地址 http://it.tkbbs.com  [风雪残士  2005年12月9日]            本站推出新浪VIVI收藏夹服务,欢迎使用  [风雪残士  2005年10月18日]        
您现在的位置: 翱翔翼站 >> 文章中心 >> 编程开发 >> 网页开发 >> ASP.NET >> 文章正文 今天是:
DataGrid的多行提交 【字体:
作 者:佚名 文章来源:网络 更新:2006-8-15 1:37:29 点击:







尽管ASP.NET DataGrid是众所周知非常好的表格控件,不过,提起DataGrid的编辑功能,我们却不敢恭维了,就拿DataGrid的数据提交功能来说,的确存在很大的问题:在DataGrid中,每编辑一行就要提交一行,即所谓“单行编辑、单行提交”,这样的话,如果编辑的行数过多,不仅用户操作繁琐,还会造成对服务器的频繁访问,极大降低系统效率。

当然了,有一种借尸还魂的解决方法,那就是把所要编辑的内容转到其他的页中在TextBox中进行编辑。不过,仔细想想,这种方法难道不是自己在骗自己吗,还有在Grid中我们编辑的时候总不能老是用Tab键来实现Grid(TextBox)之间的跳转吧,如果响应回车事件,那么需要程序员浪费很大的精力来开发。

如何解决上述问题呢?下面我向大家推荐一个我正在使用的国产DataGrid:SmartGrid(天空软件站可以下载:http://www.skycn.com/soft/23547.html ),这个控件我已经用了好长的时间了,现在来同大家探讨一下SmartGrid的多行提交的方法:SmartGrid并没有DataGrid中的那些按钮列而是整个的表单只有一个提交按钮,无论你更改了一行或者是多行都可以一次性的提交,下面来随便看点例子:

实例:

上图中是一个比较好的编辑的例子,例子显示,你可以编辑多行也可以编辑一行,然后一起进行提交。

代码:

修改按钮的代码:

private void btonSave_Click(object sender, System.EventArgs e)

         {

              this.DataGrid1.ReadOnly = false;//进入编辑

              this.DataGrid1.AllowAdd = true;//允许添加

              this.DataGrid1.AllowDelete = true;//允许删除

         }

此段代码是smartgrid的独有的属性你可以设添加删除 编辑 的各种的功能

保存按钮的代码:
private void Button2_Click(object sender, System.EventArgs e)

         {

              DataTable t = (DataTable)this.SmartGrid1.DataSource;

              this.sqlDataAdapter1.Update(t);            

              t.Clear();

              this.sqlDataAdapter1.Fill(t);

              this.SmartGrid1.DataSource = t;

         }

这是整体的把数据提交到数据库中,这种做法适合大数据量的情况

还有一种是数据逐行的提交到服务器

代码:

private void btonSave_Click(object sender, System.EventArgs e)

         {            

              DataTable tb=(DataTable)this.SmartGrid1.DataSource;

              SqlParameter[] parameters=new SqlParameter[5];

              foreach(DataRow dr in tb.Rows)

              {

                   parameters[0]=new SqlParameter("@customerId",""+dr[1]+"");

                   parameters[1]=new SqlParameter("@companyName",""+dr[0]+"");

                   parameters[2]=new SqlParameter("@contactName",""+dr[2]+"");

                   parameters[3]=new SqlParameter("@contactTitle",""+dr[3]+"");

                   parameters[4]=new SqlParameter("@address",""+dr[4]+"");

                   //EamPd 是类Execute是执行存储过程的函数parameters是存储过程所需要的参数

                   EamPd.Execute("CreatLayer",parameters);

              }            

         }



文章录入:风雪残士    责任编辑:风雪残士 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    相关文章
    解决了datatree的‘死节点’…
    datatree和数据库绑定的最少…
    修改的一个导出DataSet到xls…
    ORLAND.DATA.ORACLE不匹配错…
    C\S结构中成批保存CLIENTDAT…
    在DElphi中的DataGrid怎样使…
    delphi7找不到TBDEClientDat…
    多层数据库开发十一:TClient…
    ComboBox的DataValue值
    自定义DataSet,并写入数据
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    最新文章 TOP10
    最新热门 TOP10
    最新推荐TOP10
    翱翔翼站拥有本站所有版权! Copyright © 2005 - 2008 5-IT.COM
    本站维护 :风雪残士

    浙ICP备05039908号
    努力打造国内最全的电脑技术资料库