DataGrid的多行提交

    尽管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);

              }            

         }

时间: 2024-08-04 08:55:37

DataGrid的多行提交的相关文章

ASP.NET技巧:DataGrid的多行提交

asp.net|datagrid|技巧 尽管ASP.NET DataGrid是众所周知非常好的表格控件,不过,提起DataGrid的编辑功能,我们却不敢恭维了,就拿DataGrid的数据提交功能来说,的确存在很大的问题:在DataGrid中,每编辑一行就要提交一行,即所谓"单行编辑.单行提交",这样的话,如果编辑的行数过多,不仅用户操作繁琐,还会造成对服务器的频繁访问,极大降低系统效率. 当然了,有一种借尸还魂的解决方法,那就是把所要编辑的内容转到其他的页中在TextBox中进行编辑.

wince-WINCE 5.0使用datagrid在第一行插入新行

问题描述 WINCE 5.0使用datagrid在第一行插入新行 int rowNum = this.dataGrid.CurrentRowIndex + 1; DataTable dt = (DataTable)this.dataGrid.DataSource; DataRow dr = dt.NewRow(); dr[0] = rowNum; dr[1] = ""; dr[2] = ""; dt.Rows.InsertAt(dr, rowNum - 1); fo

checkbox-html 结合 php,如何easyui的datagrid进行多行修改数据?

问题描述 html 结合 php,如何easyui的datagrid进行多行修改数据? html页面用的easyui-datagrid,然后是 <table id=""dg""> <thead> <form id=""fm""> <tr> <th field=""ck"" checkbox=""true"

easyui-Easyui datagrid IE下 行编辑器中控件会随滚动条浮动

问题描述 Easyui datagrid IE下 行编辑器中控件会随滚动条浮动 解决方案 什么版本的easyui?1.4.1没有你说的问题..你的layout是全屏的还是设置了容器而已 解决方案二: 在火狐下无此问题,另外启用行编辑器时候整个行长度会变长一些,这个问题存在于所有浏览器另外 我的datagrid 外面有一层 layout布局. 解决方案三: 申报编号 项目名称 申报单位 协作单位 投资总额 已完成投资额 申报补助额 项目状态 项目内容 width=""70"&q

git 命令行提交项目报错

问题描述 git 命令行提交项目报错 项目有子目录的话提交报错: fatal: Pathspec '文件夹' is in submodule 'modules/iphone/文件夹' 我是一层层git add 文件夹 当add到第二层文件夹的时候就报错了: 第二种情况: 我整个项目都在命令行提交 git add -A :git commit -m "XXX" 报错 Changes not staged for commit: modified: quHaoCRM (modified c

Window CE设备 DataGrid选择多行问题

问题描述 现在有这么个需求:在WindowCE环境下,使用了个DataGrid组件,要同时选中多行数据,做相同的修改,如何才能做到同时选中多行呢??注意WindowCE环境下,没有DataGridView组件,否则事情就简单多了..datagrid组件有个isSelected()方法,可以设定一个单击事件,当点击一行时选中,如果已选中,再点击就取消选中该行,我试过这种方法,不知道为什么不起作用.下面是我的代码,求助...//scanDataGrid是我定义的dataGrid,从手持机上扫描条形码

为DataGrid中的行增加序号!

datagrid 有时,你需要为在DataGrid中显示每行的序号,如果使用Oracle数据库,你可以利用RowNum在Select命令中构造行序号,然后直接绑定到DataGrid,但是如果用的是SQL Server数据库,那么,该如何为Datagrid中增加行序号呢? ADO.NET中通过DataColumn的3个属性来支持自动增量列:AutoIncrement,AutoIncrementSeed,AutoIncrementStep.只要将DataColumn的AutoIncrement设置为

Datagrid加载和提交时候自动出现BusyIndicator并绑定

BusyIndicator和DataGrid搭配使用的效果就是当Datagrid加载数据或者提交的时候自动灰掉并出现"Please wait..."进度条,这是一个非常普通的需求,因为从服务器端加载和提交数据谁也不知道需要耗时多久,很多其他的框架比如ExtJS都有很好的支持.在Silverlight中也是很方面的,就是将需要等待载入的控件(这里是DataGrid),作为BusyIndicator 的子控件即可.需要注意的是BusyIndicator自动绑定ViewModel的IsBus

.net datagrid 选择多行

datagrid 功能:点击datagrid并且按住键盘上的ctrl或shift可选择多行 Public Class MyDataGridCLASS Inherits DataGrid Private m As New ArrayList Public ReadOnly Property MultiSelectedIndex() As Integer() Get Return m.ToArray(GetType(Integer)) End Get End Property Protected O