GridView của chúng ta ở trên có rất nhiều cột được định nghĩa sẵn, 2 trong số đó (SupplierĩD và CategorylD) là các cột khóa ngoài, và việc hiển thị các cột này có vẻ như không phải là một ý tưởng hay.
Xóa bớt các côt không cần thiết
Chúng ta có thể bắt đầu việc dọn dẹp giao diện bàng cách xóa đi một số cột không cần thiết. Tôi có
P ro d u cts
P ro d u c tN a m e Edit Delete Chai Edit Delete Chang Edit Delete Aniseed Syrup
S upplierlD C a te g o ry lD U nitP rice U n itsln S to c k U n itsO n O rd er D is c o n tin u e d
Edit Delete Chef Anton’s Cajun Seasoning 2
Edit Delete Chef Anton's Gumbo Mix 2
Edit Delete Grandma’s Boysenberry Spread 3 Edit Delete Uncle Bob's Organic Dried Pears 3 Edit Delete Northwoods Cranberry Sauce 3
bdit Delete Mishi Kobe Niku 4
Edit Delete Ikura 4
1 2 3 4 5 6 7 8
100.0000 39
22.0000 16
10.0000 13
23.0000 53 21.3500 0 25.0000 120
30.0000 15
40.0000 6 97.0000 29 31.0000 31
0
41 70
0 0 0 0 0 0 0
□
□
Neu bạn đã từng dùng control <asp:ObjectDataSource> trước đây và truyền các tham số cho các phương thức cập nhật, một trong những thứ khốn khố bạn biết có lẽ là việc thay đối tham số của các phương thức cập nhật trong TableAdapter khi các thông số được nhận từ lớp giao diện bị thay đổi.
Vớ dụ: nếu chỳng ta xúa một cột trong bảnô ở fren, chỳng ta lại phải chỉnh sửa lại TableAdapter để nó hỗ trợ các phương thức cập nhật không cần tới tham số đã bị xóa đó.
Một điều hay là với <asp:LinqDataSource> bạn không cần thực hiện các thay đối kiểu như vậy. Chỉ đơn giản là thêm hoặc xóa một cột và chạy lại chương trình - không cần làm thêm bất cứ điều gì khác. Điều này làm cho việc thay đổi giao diện web dùng<asp:LinqDataSource> dễ hon nhiều.
Xỏa các cỏt SupplicrĩD và CategorvĩD
Hiện tại, chúng ta hiến thị các giá trị khóa ngoài đến các bảng Supplier và Category trong GridView:
Products
ProductName SupplierlD CategorylD UnrtPrice UnrtslnStock UnitsOnOrder Discontinued Edit Delete chai
Edit Delete Chang
100.0000 39 22.0000 16
0
41
□
□
Điều này tuy cần thiết đứng từ góc độ mô hình dữ liệu, nhưng lại không mang lại giá trị gì cho người dùng. Thứ mà chúnẹ ta làm là hiển thị CategoryName và SupplierName, và cung cấp một dang sách xổ xuống trong chế độ Edit cho phép người dùng dễ dàng chọn các giá trị cho SupplierlD và Category ID.
Tôi có thể thay đổi GridView đế hiển thị Supplier Name và Category Name thay vì ID bằng việc thay thế <asp:BoundField> với một <asp:TemplateField>. Trong TemplateField này, tôi có thế thêm bất kỳ nội dung nào tôi muốn để tùy biến lại cách hiển thị của cột dữ liệu.
Trong đoạn mã dưới đây, tôi sẽ tận dụng các thuộc tính Supplier và Category trên mồi Product, nhờ đó tôi có thể dề dàng gắn nối các cột Supplier.CompanyName và Category.CategoryName và các cột tương ứng trong Grid.
< asp :G rid V iew ID = "G rid V ie w l" D ataSo urceID = "Pro ductD ataSo urce" C s s C la s s = " g rid v ie w " A lt e r n a t ii
<columns>
<asp: commandfi e ld ShowDeleteButto n = "T ru e " Show EditB utto n= "Tr u e " x / a s p : commandfie 1 d>
< a s p :b o u n d fie ld D ataField="ProductN am e" H eaderText=“ ProductName" So rtExp ressio n = "P r<
< a sp :T e m p ia te F ie ld H eaderText= "Suppli e r " S o rtE x p re s s io n = "S u p p li e r . CompanyName">
cltem Tem plate>
< % # Eval("S u p p li e r . CompanyName")%>
</ItemTemplate>
< / a s p :T em p iateFi e l d>
< a sp :T e m p ia te F ie ld H eaderText= "Category" So rtExp ressio n= "C ateg o ry.C ateg o ryN am e">
<ItemTemplate>
< % # Eval("C ategory.C ategoryN am e") %>
< / ItemTemp1ate>
< /a sp :T e m p ia te F ie ld >
< a sp :b o u n d fie ld D a t a F ie ld = "U n itP rice" H e a d e rT e x t= "U n itP ric e " S o rtE x p re s s io n = "U n itP r
< a sp :b o u n d fie ld D a ta F ie ld = " U n its In S to c k " H e a d e rT e x t= "U n its In s to c k " S o rtE x p re s s io n = "l
< a sp :b o u n d fie ld D a ta F ie ld = "U n itsO nO rder" H eaderText= "U nitsO nO rder" S o rtE x p re s s io n = "l
< a s p :c h e c k b o x fie ld D a t a F ie ld= "D isco ntin u ed " H eaderText=” D isco n tin u e d " S o rt E x p r e s s i 01
</columns>
^ < /asp:G ridV iew >
Và bây giờ khi chạy ứng dụng, tôi sẽ có danh sách các Category và Supplier theo tên:
Products
ProductN am e UnitPrice UnitslnStock U nitsO nOrder D iscontinued
Edit D elete C ô te d e B laye aux jo y e u x
ec c lé s ia stiq u e s B e v e ra g e s 2 6 3 .5 0 0 0 17 0 Edit D elete C h a r tr e u s e v e rte Aux jo y e u x
ec c lé s ia stiq u e s B e v e ra g e s 18.0000 69 0
Edit D elete S a s q u a tc h Ale Bigfoot B rew eries B e v e ra g e s 1 5.0000 111 0 n Edit D elete S te e le y e S to u t Bigfoot B rew eries B e v e ra g e s 1 3.0000 20 0 □ Edit D elete Laughing
L u m b erjack Lager Bigfoot B rew eries B e v e ra g e s 1 4 .0 0 0 0 52 0 Edit D elete Q u eso C a b ra le s C o o p e ra tiv a d e
Q u e so s 'Las C a b ra s' Dairy
Products 2 2 .0 0 0 0 22 30 □
Edit D elete Q u eso M anchego La P asto ra
C o o p e ra tiv a d e Q u e so s 'Las C a b ra s'
Dairy
Products 3 8 .0 0 0 0 86 0
Edit D elete E sca rg o ts d e
B o u rg o g n e E sca rg o ts N o u v eau x S eafo o d 1 3 .2 5 0 0 62 0 □ Edit D elete A n iseed S y ru p Exotic Liquids C o n d im en ts 1 0 .0 0 0 0 13 70
Edit D elete C hang Exotic Liquids B e v e ra g e s 2 2 .0 0 0 0 16 41 □
1 2 3 4 5 6 7 8
Đề tạo ra danh sách cho phép người dùng chọn các giá trị của các cột Supplier và Category trong chế
/ < a s p :L in q D a t a s o u r c e lD = ,,c a t e g o r y D a t a s o u r c e " N C o n textTyp e N am e = "W e b A p p li c a t i o n l 2 . N o rth w i n d D a t a C o n t e x t "
T a b l e N am e = "C ate g o ri e s "
r u n a t = " s e r v e r " />
< a s p :L in q D a t a S o u r c e ID = " S u p p lie r D a t a S o u r c e "
C ontextTypeN am e= "W ebA pp1i c a t i o n l 2 . N o rth w i n d D a t a C o n t e x t "
T a b l eN am e= "Sup pli e r s "
^_______________________________ r u n a t = " s e r v e r " /> ___________________________________________________________j
Toi có the quay tro lai các cot <asp:TemplateField> m á chúng ta da tao va tuy bien giao dien Edit cỹa chỳng (bọng each chi ra EditltemTemplate). Chỳng ta cỳng sộ tỳy biộn mửi cot dộ cú mửt danh sách trong ehe do Edit, va các giá tri sé duoc láy tú các datasource CategoryDataSource va SupplierDataSource ú tren, va cỏc mửt lien hộ nỏy sộ la 2 chiộu:
^ < a s p : Tem pia t e F i e ld H e a d e rT e x t= "S u p p li e r " S o r t E x p r e s s i on = "S u p p li e r . CompanyName">^
< Item Tem plate>
< % # E v a l("S u p p li e r . CompanyName")%>
< /Item Tem p late>
<Edi tlte m T e m p la te >
< a sp :D ro p D o w n List ID = ” D ro p D o w n L istl"
D a ta S o u rc e ID = "S u p p li e rD a ta S o u rc e "
D a ta V a lu e F i e l d = "S u p p li e r ID "
D a ta T e x tF i e l d="CompanyName"
S e le c t e d V a lu e = ' <%#Bi n d (" S u p p li e r ID " ) %>' r u n a t = " s e r v e r " />
< /E d i tltem Tem p l ate>
^ < / a s p : Tempi a t e F i e l d>________________________________________________________________________________________^
Vá gió, khi nguói dúng nháp chuot lén Edit tren GridView, chúng se duoc hién thi nhu mot danh sách Supplier m á san phám dang chon két hop:
Products
Edit Delete Chai Exotic Liquids Beverages 100.C
Update Cancel Chang Exotic Liquids Beverages 22 Oi
Exotic Liquids
New Orleans Caiun Delights
Edit Delete Aniseed Syrup Condiments 10.OC
Chef Anton's Cajun Edit Delete
Seasoning
Edit Delete Chef Anton's Gumbo Mix
Grandma Kelly's Homestead
Condiments 23.OC
Condiments 21.35
Tokyo Traders
Cooperativa de Q uesos 'Las Cabras' Mayumi's
Pavlova. Ltd
Va khi ban bám nút Save, san phám sé duoc cáp nhát mót cách phú hop (GridView sé dúng giá tri cúa dong duoc chon hien tai trong DropDownList dé dua váo SupplierID).