[GridView][ASP.NET]GridView 自動綁定借助DetailsView與EmptyDataTemplate新增記錄

  • 4248
  • 0

摘要: GridView 自動綁定借助DetailsView與EmptyDataTemplate新增記錄

 

1.注意:

實現新建功能的時候,不能讓gridview允許排序,否則會出錯:“資料庫不允許排序”!

2.添加記錄:

Gridview不支持添加新記錄的功能。

3.解決辦法:

有很多方法可以解決這個問題,

方法1:

你可以在gridview裡添加一個鏈接,讓這個鏈接跳轉到另外一個頁面,用戶添加完記錄之後再返回原來的

gridview頁面。

缺點:

增加了與服務器的通信量,也使操作顯得比較繁瑣。

推薦方法2:使用DetailsView結合Gridview的EmptyTemplate模板。

4.思路:

1>在gridview裡增加一個ButtonField,並設置它的CommandName屬性為Insert。
用戶通過單擊插入按鈕來增加新的記錄。
你可以設置按鈕的commandname然後設置detailsview的默認狀態為插入。

使用如下的技術增加新記錄:
2>在GridView的下面放置一個DetailsView控件。
用戶可以通過DetailsView增加新記錄,然後這條新記錄就會顯示在GridView裡。

通過一個超級鏈接使用戶連接到另一個使用DetailsView增加新記錄的web form。
一旦記錄被添加後就會返回之前的頁。

缺點:
第一種方法佔用了太多的屏幕空間,即使你增加的只是很少的記錄。所以它不是“主要用於編輯,偶爾增

加記錄”情況下的好的選擇。
第二 ​​種選擇需要額外創建一個web form,因為來回導航會需要向服務器發送更多的請求。

GridView控件提供了一個被稱作Empty Data Template的模板。
當GridView裡沒有數據顯示的時候這個模板就會顯示出來。一般在沒有數據顯示的時候,這個模板會被用

於顯示一個給出示給用戶的狀態信息。但是,你也可以為了別的目的而是用它。你可以使用它來給

GridView增加新的記錄。

5.使用:

1>在GridView中增加一個ButtonField,並設置它的CommandName屬性為Insert。
用戶通過單擊插入按鈕來增加新的記錄。

2>右鍵單擊GridView選擇編輯模板– Empty Data Template選單選項。
拖拽DetailsView控件到Empty Data Template內,設置它的DataSourceID屬性為SqlDataSource1。
同時設置它的DefaultMode屬性為Insert。

當Empty Data Template顯示的時候,DetailsView將會做好插入記錄之前的準備。

3> GridView的RowCommand事件處理的程式碼:

//CommandName检查
if (e.CommandName == "Insert")
{
    GridView1.DataSourceID = "";
    GridView1.DataBind();
}

 

如果我們設置了GridView的DataSourceID屬性為空,然後調用GridView的DataBind()方法的話, 那麼

GridView將不會有任何數據,從而顯示Empty Data Template。

4> DetailsView控件的ItemInserted事件
當DetailsView成功的插入了一條新記錄的時候,這個ItemInserted事件就會被觸發。

在ItemInserted事件內寫出如下程式碼:

GridView1.DataSourceID = "SqlDataSource1";
GridView1.DataBind();

再次設置了GridView的DataSourceID屬性為SqlDataSource1,然後再次綁定它。這樣GridView就可以顯示

出最新插入的記錄。

6.問題:
在指定資料庫後會自動進行數據綁定,而不用再調用DataBind()方法。

提示:取消類似重置功能,屬於內置事件,並非返回功能。

我只是個小小的入門者