如何使用最簡便的方式實現GridView下的插入/新建數據操作

GridView控件不允許你插入新記錄。 本文中我將舉例說明快速解決這個問題的方法。
介紹
幾個月前我寫了一篇文章,是講述一個允許你在DataGrid裏添加一條新記錄的技巧。 GridView控件不允許你插入新記錄。 這種情況下開發人員經常使用如下的技術增加新記錄:

      ·他們在GridView的下面放置一個DetailsView控件。 用戶可以通過DetailsView增加新記錄,然後這條新記錄就會顯示在GridView裏。
      ·他們通過一個超級鏈接使用戶連接到另一個使用DetailsView增加新記錄的web form。 一旦記錄被添加後就會返回之前的頁。

這些方法都有它們自己的缺點。 第一種方法佔用了太多的屏幕空間,即使你增加的只是很少的記錄。 所以它不是“主要用於編輯,偶爾增加記錄”情況下的好的選擇。 第二種選擇需要額外創建一個web form,因爲來回導航會需要向服務器發送更多的請求。 本文中我將舉例說明快速解決這個問題的方法。
解決方案
GridView控件提供了一個被稱作Empty Data Template的模板。 當GridView裏沒有數據顯示的時候這個模板就會顯示出來。 一般在沒有數據顯示的時候,這個模板會被用於顯示一個給出示給用戶的狀態信息。 但是,你也可以爲了別的目的而是用它。 本例中,你將使用它來給GridView增加新的記錄。

新建一個Web Form示例
開始先在Visual Studio中新建一個web站點。 拖拽一個SQL數據源控件並配置它以從Northwind數據庫的Customers表中選擇出CustomerID、CompanyName、ContactName和Country列。
婕旂ず鏍蜂緥
確保選擇了“高級”按鈕,並且選中“生成INSERT、UPDATE和DELETE語句”複選框。(一定要設置數據的主鍵,否則該功能無法實現)
現在,在你的web form裏添加一個GridView控件,設置它的DataSourceID屬性爲SqlDataSource1。 啓用這個GridView的編輯、刪除和分頁。 在GridView的智能標籤中選擇“編輯列…”選項。
GridView中增加一個ButtonField,並設置它的CommandName屬性爲Insert。 用戶通過單擊插入按鈕來增加新的記錄。
 
現在右鍵單擊GridView選擇編輯模板 – Empty Data Template菜單選項。 拖拽DetailsView控件到Empty Data Template內,設置它的DataSourceID屬性爲SqlDataSource1。
同時設置它的DefaultMode屬性爲Insert。 當Empty Data Template顯示的時候,DetailsView將會做好插入記錄之前的準備。

現在來到web form的後置代碼中寫出GridView的RowCommand事件處理的代碼,出示如下:(DataSourceID=“”;不能實現前面代碼數據分頁功能,所以應爲DataSourceID=null;)
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    
if (e.CommandName == "Insert")
    
{
          GridView1.DataSourceID
= "";
          GridView1.DataBind();
      }

}
 
這裏我們檢查了GridViewCommandEventArgs的CommandName是否是“Insert”。 如果我們設置了GridView的DataSourceID屬性爲空,然後調用GridView的DataBind()方法的話, 那麼GridView將不會有任何數據,從而顯示Empty Data Template。

現在我們來處理DetailsView控件的ItemInserted事件。 當DetailsView成功的插入了一條新記錄的時候,這個ItemInserted事件就會被觸發。 在ItemInserted事件內寫出如下代碼:(實際操作的時候寫得是Get_Sql();)
protected void DetailsView1_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
{
      GridView1.DataSourceID
= "SqlDataSource1";
      GridView1.DataBind();
}

這裏我們再次設置了GridView的DataSourceID屬性爲SqlDataSource1,然後再次綁定它。 這樣GridView就可以顯示出最新插入的記錄。
 
 
 
總結
1、GridView控件不允許你插入新的記錄。 但是,通過它的Empty Data Template的幫助和DetailsView控件,你就可以有一個插入新記錄的非常棒的方法。 用這種方法你可以節省屏幕空間,也不需要再用額外的頁了。
下面的截圖顯示了我們的web form
2、記得在GridView及DetailsView增加相應的事件觸發代碼,具體設置參照前文
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章