摘要: 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()方法。
提示:取消類似重置功能,屬於內置事件,並非返回功能。
我只是個小小的入門者