返回“ASP.NET 2.0數據教程目錄”
導言
在前面一些教程中,我們已經看到如何使用應用程序框架, ObjectDataSource,以及那些提供增、改、刪功能的數據Web控件。在我們已經實 現的刪除數據的界面中,包含一個刪除按鈕,當點擊它的時候,會導致數據回傳 以及調用ObjectDataSource的Delete()方法。然後Delete()方法會調用對應業務 邏輯層中的方法,再進入數據訪問層,直至調用最終操作數據庫的DELETE語句。
雖然這個界面已經能夠讓用戶通過GridView,DetailsView,或者 FormView控件來刪除記錄,但是在用戶點擊刪除按鈕的時候,它缺少一些提示信 息。如果用戶本想點擊編輯按鈕,但是不小心點擊了刪除按鈕,那麼原本會更新 的記錄將會被刪除。為了避免此類事情發生,在這篇教程裡面,我們將為點擊刪 除按鈕的時候,添加一個能在客戶端顯示提醒的窗口。
JavaScript的 confirm(string)方法將在一個模式窗口中顯示那些作為string參數傳進來的文本 ,這個窗口將會顯示兩個按鈕-確定(OK)和取消(Cancel)。(見圖1)confirm (string)方法將根據點擊不同的按鈕來返回一個布爾類型值。(返回true,如果 點擊了確定(OK),返回false如果點擊了取消(Cancel))
圖1:JavaScript的confirm(string)方法顯示一個模式的,客戶端的窗 口
在一個表單的提交過程中,如果從客戶端的事件處理器返回一個false 值,那麼這個表單將取消提交。使用這種特性,我們可以在這個刪除按鈕的客戶 端事件處理器 onClick中,調用confirm(“你確定要刪除這個產品嗎? ”),讓它返回一個布爾值。如果用戶點擊了取消,confirm(string)將返回 false,因此會取消表單的提交。在沒有回傳的前提下,這個已經點擊了刪除按鈕 的產品並沒有被刪除。相反,如果在確認窗口中用戶點擊了確定,回傳將會繼續 而且這個產品將會被刪除。參考 使用JavaScript的confirm()方法控制表單提交 來獲取這方面的更多信息。
在添加這些有用的客戶端腳本時候,使用模版 和使用一個CommandField相比,將會有一些細微的差別。因此,在這篇教程中, 我們將同時考察FormView和GridView的例子。
注意:正如這篇教程中討論 到的,使用客戶端確認技術時候,我們假設用戶的浏覽器支持JavaScript並且已 經啟用了JavaScript支持。如果這其中的任何一個假設不能滿足,那麼點擊刪除 按鈕的時候將會立即進行回傳而不會顯示一個確認窗口。
第一步:新建一 個支持刪除的FormView
首先在EditInsertDelete目錄下面,創建 ConfirmationOnDelete.aspx頁面,並添加一個FormView控件,然後給這個控件綁 定一個ObjectDataSource,這個數據源控件將從ProductsBLL類的GetProducts() 方法獲取產品信息。同時給它的Delete()方法綁定指向ProductsBLL類的 DeleteProduct(productID)方法。確保INSERT和UPDATE標簽的下拉框中為(None )。最後,在FormView的屬性窗口中勾上Enable Paging多選框。
通過這 些步驟,創建了一個以下語句聲明的ObjectDataSource:
1<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="DeleteProduct"
2
3 OldValuesParameterFormatString="original_{0}" SelectMethod="GetProducts" TypeName="ProductsBLL">
4
5 <DeleteParameters>
6
7 <asp:Parameter Name="productID" Type="Int32" />
8
9 </DeleteParameters>
10
11</asp:ObjectDataSource>
12