尽管ASPNET DataGrid是众所周知非常好的表格控件不过提起DataGrid的编辑功能我们却不敢恭维了就拿DataGrid的数据提交功能来说的确存在很大的问题在DataGrid中每编辑一行就要提交一行即所谓单行编辑单行提交这样的话如果编辑的行数过多不仅用户操作繁琐还会造成对服务器的频繁访问极大降低系统效率
当然了有一种借尸还魂的解决方法那就是把所要编辑的内容转到其他的页中在TextBox中进行编辑不过仔细想想这种方法难道不是自己在骗自己吗还有在Grid中我们编辑的时候总不能老是用Tab键来实现Grid(TextBox)之间的跳转吧如果响应回车事件那么需要程序员浪费很大的精力来开发
如何解决上述问题呢?下面我向大家推荐一个我正在使用的国产DataGridSmartGrid(天空软件站可以下载 )这个控件我已经用了好长的时间了现在来同大家探讨一下SmartGrid的多行提交的方法SmartGrid并没有DataGrid中的那些按钮列而是整个的表单只有一个提交按钮无论你更改了一行或者是多行都可以一次性的提交下面来随便看点例子
实例
上图中是一个比较好的编辑的例子例子显示你可以编辑多行也可以编辑一行然后一起进行提交
代码
修改按钮的代码:
private void btonSave_Click(object sender SystemEventArgs e)
{
thisDataGridReadOnly = false;//进入编辑
thisDataGridAllowAdd = true;//允许添加
thisDataGridAllowDelete = true;//允许删除
}
此段代码是smartgrid的独有的属性你可以设添加删除 编辑 的各种的功能
保存按钮的代码:
private void Button_Click(object sender SystemEventArgs e)
{
DataTable t = (DataTable)thisSmartGridDataSource;
thissqlDataAdapterUpdate(t);
tClear();
thissqlDataAdapterFill(t);
thisSmartGridDataSource = t;
}
这是整体的把数据提交到数据库中这种做法适合大数据量的情况
还有一种是数据逐行的提交到服务器
代码:
private void btonSave_Click(object sender SystemEventArgs e)
{
DataTable tb=(DataTable)thisSmartGridDataSource;
SqlParameter[] parameters=new SqlParameter[];
foreach(DataRow dr in tbRows)
{
parameters[]=new SqlParameter(@customerId+dr[]+);
parameters[]=new SqlParameter(@companyName+dr[]+);
parameters[]=new SqlParameter(@contactName+dr[]+);
parameters[]=new SqlParameter(@contactTitle+dr[]+);
parameters[]=new SqlParameter(@address+dr[]+);
//EamPd 是类Execute是执行存储过程的函数parameters是存储过程所需要的参数
EamPdExecute(CreatLayerparameters);
}
}