盡管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);
}
}
From:http://tw.wingwit.com/Article/program/net/201311/13729.html