數據綁定控件展示、編輯、新建用戶列表

若其中有錯誤地方,期待您的批評指正。

效果:

概述:

(1)講述與數據展示相關的數據源控件和數據綁定控件,數據源控件主要講述ObjectDataSource控件,該控件可以將業務邏輯層返回的對象或者對象集合直接綁定在數據綁定控件。

(2)利用SqlDataSource數據源控件,對數據的訪問方法得到了極大的簡化。你幾乎不用編寫一行代碼,就能夠完成數據的查詢、更新、插入和刪除等常用操作。但是這有一個缺點:表示層和業務邏輯層混雜在一起。當項目規模較大時就需要分層處理。這樣的話,SqlDataSource數據源控件就不能發揮作用。而且SqlDataSource返回的對象是DataSet。我們知道DataSet有諸如弱類型、非面向對象等缺陷。

(3)爲了解決這個問題,我們所以使用ObjectDataSource數據源控件。ObjectDataSource控件通過結構對象或者業務實體對象,將數據傳遞給數據綁定控件,從而實現數據的顯示、編輯、排序等功能。

(4)下面例子使用已經搭建好的三層結構,數據庫表Admin和Role存在主外鍵關係,如圖1,圖2。使用ObjectDataSource數據源控件,數據綁定控件使用了GridView和DetailsView

                                        

(5)連續插入新用戶。

1.用戶列表綁定的步驟

前面已經講述過GridView的用法,不過使用的是SqlDataSource,這次使用ObjectDataSource。

(1)將GridView控件拖入頁面,並“取名”ID爲GridView_Admin這時需要選擇新建數據源,如圖3所示。

(2)選擇新建數據源,打開數據源類型選擇對話框,如圖4所示。我們使用ObjectDataSource,所以這裏選擇對象,並給數據源“取名”指定ID。

(3)單擊“確定”按鈕後,轉到選擇業務對象對話框,如圖5所示,選擇業務邏輯層BLL.AdminManager類

(4)單擊“下一步”按鈕,進入定義數據方法對話框,可以設置需要的查、改、增、刪方法,如圖6所示。GridView沒有INSERT插入方法。所以在SELECT、UPDATE、DELETE選擇相應的方法。

(5)單擊“完成”按鈕就可以顯示Admin表中數據,但是不會顯示角色RoleGridView只能綁定基本類型,但不能綁定自定義的類型,可以將其轉換成模板,下面會講到。

2.GridView顯示、編輯修改用戶

(1)在智能標記中勾上,啓用編輯、啓用刪除、啓用選定內容。因爲前面已經講述過分頁,這裏暫時不作詳細介紹。如圖7所示。

(2)智能標記“編輯列”添加Role字段,並將Role字段和Id字段,都轉換成模板。單擊“確定”。如圖8所示。

(3)GridView綁定三層DataKeyNames屬性一定要手動去配置。如圖9所示,這裏選擇爲Id。

(4)智能標記,進入編輯模板,選擇模板Id,因爲Id是一個標識列,當修改用戶時候,不需要修改ID,只顯示其內容即可。EditItemTemplate總是默認爲txt文本框,這裏只需將該文本框刪除,拖一個Label標籤即可,智能標記,編輯DataBindings,字段綁定到Id。僅僅用於顯示Id。如圖10所示。

               

(5)編輯模板,選擇“Role”,將Label標籤“取名”爲lblAdmin。並編輯DataBindings,取消雙向數據綁定,選中自定義綁定,修改代碼表達式Eval("Role")爲Eval("Role.RoleName")。如圖11所示。單擊“確定”。

(6)刪除EditItemTemplate中的txt文本框,並拖一個DropDownList控件到EditItemTemplate。選擇新建數據源,打開數據源類型選擇對話框,使用ObjectDataSource,所以這裏還選擇對象,並給數據源“取名”指定ID。如圖12所示。

(7)單擊“確定”按鈕後,轉到選擇業務對象對話框,如圖13所示,選擇業務邏輯層BLL.RoleManager類

(8)單擊“下一步”按鈕,進入定義數據方法對話框,這裏只選擇SELECT方法,就一個顯示功能即可,SELECT選擇GetAllRoles(),返回 List<Role>。

(9)單擊“完成”,選擇在DropDownList中顯示的字段爲“RoleName”,爲DropDownList值選擇字段爲“RoleId”,單擊“確定”。

(10)DropDownList智能標記,編輯DataBindings,先選擇字段綁定到Role,然後取消雙向數據綁定,選中自定義綁定,修改代碼表達式Eval("Role")爲Eval("Role.RoleId")。單擊“確定”。目前還不能進行編輯,否則報錯。

(11)綁定GridView的ObjectDataSource的Updating事件。手寫代碼,代碼如圖14所示。先導入using Models和using BLL包。

      

(12)保存,查看IE,如圖15所示。可以進行編輯,更新。

3.DetailsView顯示、編輯、插入用戶

DetailsView控件可以顯示數據庫中單條記錄的詳細信息,其實使用起來,DetailsView控件和GridView控件非常相似,步驟與前面講述的GridView步驟大體相似,可以參考,與GridView不同的步驟,使用圖示。依舊使用ObjectDataSource控件,唯一不同的是,這裏的ObjectDataSource控件是傳遞參數的。DetailsView可以進行新增數據。

顯示用戶

(1)將DetailsView控件拖入頁面,並“取名”ID爲DetailsView_Admin這時需要選擇新建數據源。

(2)打開數據源類型選擇對話框,我們使用ObjectDataSource,所以這裏選擇對象,並給數據源“取名”指定ID爲ObjectDataSource_DetailsViewAdmin。

(3)單擊“確定”按鈕後,轉到選擇業務對象對話框,選擇業務邏輯層BLL.AdminManager類,單擊“下一步”。

(4)進入定義數據方法對話框,可以設置需要的查、改、增、刪方法,所以在SELECT、UPDATE、INSERT、DELETE選擇相應的方法。這裏與GridView不同的是SELECT方法選擇的是GetAdminById()而不是GetAllAdmins(),主要是DetailsView與GridView進行關聯,當在GridView中選擇一個用戶,下面DetailsView中便顯示相應的用戶。四個方法如圖16所示。

(5)單擊“下一步”,進入到定義參數對話框,參數源選擇Control,ControlID選擇GridView_Admin,如圖17所示。

(6)單擊“完成”,智能標記,勾上啓用插入,啓用編輯,啓用刪除。

(7)智能標記“編輯字段”添加Role字段,並將Role字段和Id字段,都轉換成模板。單擊“確定”。

(8)同上面介紹的GridView一樣,DataKeyNames屬性一定要手動去配置,這裏選擇爲Id。

                                

(9)智能標記,進入編輯模板,選擇模板Id,因爲Id是一個標識列,修改用戶時候,不需要修改ID,只顯示其內容即可。EditItemTemplate總是默認爲txt文本框,這裏同樣只需將該文本框刪除,拖一個Label標籤即可,智能標記,編輯DataBindings,字段綁定到Id。僅僅用於顯示Id。InsertItemTemplate模板,插入用戶,同樣,不用插入標識列ID。如圖18所示,當GridView選擇一個Id爲34的用戶,下面就出現選中用戶信息。當點擊DetailsView中的編輯時候,Id便不再是文本框形式了。

                    

(10)編輯模板,選擇“Role”,將顯示模板ItemTemplate中Label標籤“取名”爲lblDetailsRole。並編輯DataBindings,取消雙向數據綁定,選中自定義綁定,修改代碼表達式Eval("Role")爲Eval("Role.RoleName"),單擊“確定”。

(11)刪除EditItemTemplate中的txt文本框,並拖一個DropDownList控件到EditItemTemplate,“取名”爲DropDownList_DetailsUpdate。選擇新建數據源,打開數據源類型選擇對話框,使用ObjectDataSource,所以這裏還選擇對象,並給數據源“取名”指定ID爲ObjectDataSource_DetailsUpdate。

(12)單擊“確定”按鈕後,轉到選擇業務對象對話框,選擇業務邏輯層BLL.RoleManager類

(13)單擊“下一步”按鈕,進入定義數據方法對話框,這裏只選擇SELECT方法,就一個顯示功能即可,SELECT選擇GetAllRoles(),返回 List<Role>。

(14)單擊“完成”,選擇在DropDownList中顯示的字段爲“RoleName”,爲DropDownList值選擇字段爲“RoleId”,單擊“確定”。

(15)DropDownList智能標記,編輯DataBindings,先選擇字段綁定到Role,然後取消雙向數據綁定,選中自定義綁定,修改代碼表達式Eval("Role")爲Eval("Role.RoleId")。單擊“確定”。現在已經能完整顯示選擇的一個用戶的詳細信息,如圖19所示。

 

編輯更新用戶

(16)綁定DetailsView的ObjectDataSource的Updating事件,而不是EditItemTemplate中的DropDownList的Updating事件。這裏很容易出錯,千萬要注意,如圖20所示。

(17)手寫代碼實現編輯更新功能,代碼如圖21所示。

        

(18)目前可以編輯更新DetailsView中的用戶,但是上面的GridView中的該條用戶,不能同步更新,還需要綁定DetailsView的ObjectDataSource的Updated事件,需要手寫一行代碼即可,代碼如圖22所示:

       

(19)保存,查看IE,修改DetailsView中的內容,便可同步更新GridView中的內容。

插入新建用戶,與編輯更新用戶相似

(20)同顯示用戶步驟(11)相同,刪除插入模板InsertItemTemplate中的txt文本框,並拖一個DropDownList控件到InsertItemTemplate,“取名”爲DropDownList_DetailsInsert。選擇新建數據源,打開數據源類型選擇對話框,使用ObjectDataSource,所以這裏還選擇對象,並給數據源“取名”指定ID爲ObjectDataSource_DetailsInsert。

(21)同理:同顯示用戶步驟(12)到(14)相同,單擊“確定”按鈕後,轉到選擇業務對象對話框,選擇業務邏輯層BLL.RoleManager類;單擊“下一步”按鈕,進入定義數據方法對話框,這裏只選擇SELECT方法,就一個顯示功能即可,SELECT選擇GetAllRoles(),返回 List<Role>;單擊“完成”,選擇在DropDownList中顯示的字段爲“RoleName”,爲DropDownList值選擇字段爲“RoleId”,單擊“確定”。

(22)DropDownList智能標記,編輯DataBindings,這裏插入模板與編輯模板不同,字段綁定,綁定到選擇“未綁定”,如圖23所示,否則會報錯。

(23)同編輯更新用戶步驟(16)相似,但是這裏需要綁定DetailsView的ObjectDataSource的Inserting事件,注意別綁定錯了。代碼也相似,如圖24所示。

          

(24)綁定DetailsView的ObjectDataSource的Inserted事件,也是一行代碼,如圖25所示。

         

(25)保存,查看IE。當選擇新建,便可以向GridView中插入新的數據。上面的做法其實還是可以簡化的,這裏暫時不做解釋。

4.連續插入新用戶

(1)拖一個TextBox標籤到頁面,“取名”ID爲txtUserName。

(2)拖一個TextBox標籤到頁面,“取名”ID爲txtPassWord,並修改TextMode屬性爲Password。

(3)拖一個DropDownList控件到頁面,“取名”ID爲DropDownList_AddUser,並新建數據源,選擇業務邏輯層BLL.RoleManager類;單擊“下一步”按鈕,進入定義數據方法對話框,這裏只選擇SELECT方法,就一個顯示功能即可,SELECT選擇GetAllRoles(),返回 List<Role>;單擊“完成”,選擇在DropDownList中顯示的字段爲“RoleName”,爲DropDownList值選擇字段爲“RoleId”,單擊“確定”。

(4)拖一個Button按鈕到頁面,“取名”ID爲btnAddUser,Text屬性爲“增加用戶”,如圖26所示。

(5)雙擊Button按鈕,進入後臺編寫代碼,如圖27所示。

           

(6)保存,瀏覽IE,如圖28所示,當輸入用戶名,密碼,選擇角色,單擊“增加用戶”,便可以在GridView中同步顯示添加的用戶。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章