ASP.NET DataGrid的多行提交

hljhrbsjf發表於2006-09-13

儘管ASP.NET DataGrid是眾所周知非常好的表格控制元件,不過,提起DataGrid的編輯功能,我們卻不敢恭維了,就拿DataGrid的資料提交功能來說,的確存在很大的問題:在DataGrid中,每編輯一行就要提交一行,即所謂“單行編輯、單行提交”,這樣的話,如果編輯的行數過多,不僅使用者操作繁瑣,還會造成對伺服器的頻繁訪問,極大降低系統效率。

當然了,有一種借屍還魂的解決方法,那就是把所要編輯的內容轉到其他的頁中在TextBox中進行編輯。不過,仔細想想,這種方法難道不是自己在騙自己嗎,還有在Grid中我們編輯的時候總不能老是用Tab鍵來實現GridTextBox)之間的跳轉吧,如果響應回車事件,那麼需要程式設計師浪費很大的精力來開發。

如何解決上述問題呢?下面我向大家推薦一個我正在使用的國產DataGridSmartGrid(天空軟體站可以下載: ),這個控制元件我已經用了好長的時間了,現在來同大家探討一下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);

}

}

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/631872/viewspace-864804/,如需轉載,請註明出處,否則將追究法律責任。

相關文章