返回“ASP.NET 2.0數據教程目錄”
導言:
在前面的教程,我們對數據訪問層進行擴展以支持數據庫事務. 數據庫事務確保一系列的操作要麼都成功,要麼都失敗。本文我們將注意力轉到 創建一個批更新數據界面.
在本文,我們將創建一個GridView控件,裡面 的每一行記錄都可以進行編輯(見圖1),因此我們沒有必要多添加一列來包含 Edit, Update,和Cancel按鈕,而是在頁面包含2個“Update Products”按鈕,被點擊時,遍歷所有的產品並對數據庫進行更新.讓我們 開始吧.
圖1:GridView控件裡的每一行記錄都可以編輯
注意:在第37章 《Performing Batch Updates》裡我們用一個DataList控件創建了一個批編輯界 面, 那篇文章與本文的區別之一在於本文使用GridView控件且使用了事 務.
考察設置所有GridView Rows可編輯的步驟
就像在第16章《An Overview of Inserting, Updating, and Deleting》考察的那樣,GridView控件 使用內置的編輯功能編輯每一行記錄。在其內部,GridView控件通過EditIndex屬 性來判斷哪一行可編輯. 一旦GridView綁定到數據源之後,它就逐行檢查,看哪 行的index值與EditIndex的值匹配,如果找到的話,該行就呈現為編輯界面.如果 是綁定列(BoundFields),則呈現為一個TextBox,其Text值為對應的BoundField的 DataField屬性的值;如果是模板列(TemplateFields),那麼呈現為 EditItemTemplate而不是ItemTemplate.
我們知道當某個用戶點擊某行的 Edit按鈕時,頁面產生回傳,將該行的index值為GridView控件的EditIndex屬性 賦值,再重新綁定數據.當點擊某行的Cancel按鈕後產生頁面回傳,在重新綁定數 據以前,將EditIndex屬性設置為-1.因為,對GridView控件的rows而言,開始時 Index值為0,而將EditIndex設為-1的話就變成只讀模式了.
如果只對行進 行編輯,EditIndex屬性工作正常,但不支持批編輯。要對GridView實施批編輯的 話,我們必須使每行都呈現為編輯界面.為此,最簡單的方法是將要編輯的列,轉 換為TemplateField,然後在ItemTemplate模板裡創建編輯界面.在接下來的幾步 ,我們將創建一個完整的可批編輯的GridView,在第一步,我們將創建一個 GridView及其ObjectDataSource,並將BoundFields和CheckBoxField轉換為 TemplateFields。在第二步和第三步,我們將編輯界面從ItemTemplates模板轉移 到EditItemTemplates.