Insus.NET在實現《ASP.NET開發,從二層至三層,至面向對象 (5)》http://www.companysz.com/insus/p/3880606.html中,沒有把數據編輯與更新功能一起演示,留下給網友們自由發揮,但是還是有網友想看看Insus.NET用實現方法。以前Insus.NET的做法,是在GridView控件中進行。如這篇視頻教程《GridView Edit Update Cancel Delete》http://www.companysz.com/insus/archive/2011/01/25/1944295.html
或者這篇《網站是否有播放音樂功能》http://www.companysz.com/insus/archive/2013/05/09/3066347.html 均可以看到GridView控件的更新功能。
總結以往的經驗,覺得編輯或更新GridView控件的記錄,用戶需要點擊多次按鈕,才能完成。而且對GridView控件編寫的代碼也多。因此Insus.NET想直接點擊GridView控件某筆記錄,然后顯示于添加的域中進行更新。OK,開始來看看:首先在GridView控件添加一列:
然后在添加按鈕后,再添加兩個銨鈕,一個是更新,一個是取消:
這兩個銨鈕,一開始它的狀態是禁用的,可看它們的Enabled=“false”。也就是說網頁加載時,這兩個銨鈕是不可用。接下來,我們分別實現OnRowCreated="GridViewEmployee_RowCreated",OnClick="ButtonUpdate_Click"和OnClick="ButtonCancel_Click"事件。先實現第一個,點擊GridView控件某一筆記錄時,希望能獲取這筆記錄數據。因此需要創建一個新的存儲過程,By主鍵來獲取點擊當前記錄:有添加了數據庫層的存儲過程,前一篇寫好的Employee.cs也需要添加相應的邏輯方法或是函數。
現在可以寫了:
上面有一個事件委托ButtonEdit_Click:
上面程序有幾點說明,先是點擊編輯之后,獲取被點選的的記錄主鍵,然后以主鍵是獲取整筆記錄,然后綁定給添加域中去(標記1)。標記2,需要把添加銨鈕與綁定主鍵的文本框禁用。標記3是Active更新和取消銨鈕。下面是取消銨鈕ButtonCancel_Click事件,實際就是初始化控件狀態功能:
文本框清空,該禁用的銨鈕禁用,該啟用的銨鈕啟用。最后是更新銨鈕ButtonUpdate_Click事件:
看到否,取消銨鈕與更新事件結束之后,所執行的代碼是一樣的。因此可以把它們寫成一個單獨的小方法:
實現完了,看看實時操作演示效果,點擊“Edit”銨鈕時,它出現了一個異常:Line: 885Error: Sys.WebForms.PageRequestManagerServerErrorException: Object reference not set to an instance of an object.F9設定中斷點,F5debug,然后按F11進行跟蹤,跑到下面出現異常了:
細心檢查,原來真正的問題,出現在BizBaseSQLSp.cs類庫中,函數public DataSet ExecuteDataSet(),下面是修改正確方法:
保存,再次運行:
沒有難度,這樣的話,設計網頁時,可以把添加域與編輯同用,不必浪費在寫GridView控件內,還要定義編輯模版。
Insus.NET雖寫的不是什么絕世之作,平凡之中能讓您從中獲取對ASP.NET技術的有所提升與積累,足已。
新聞熱點
疑難解答