巢狀GridView範例(多筆訂單、訂單明細設計範例)錄影

有時候希望多筆顯示訂單,但是訂單Orders、訂單明細OrderDetail可能分屬於不同的資料表中,因此如果多筆顯示的時候,就可以使用這個【巢狀GridView】的技巧。
這個範例會說明三個東西:
1.DropDownList與GridView互動
2.巢狀GridView的設計
3.透過RowDataView使用欄位名稱取得GridView某欄位的內容

有時候希望多筆顯示訂單,但是訂單Orders、訂單明細OrderDetail可能分屬於不同的資料表中,因此如果多筆顯示的時候,就可以使用這個【巢狀GridView】的技巧。

這個範例會說明三個東西:

  1. DropDownList與GridView互動:使用DropDownList顯示員工,當挑選了某個員工,則透過GridView顯示該員工的相關訂單內容。
  2. 巢狀GridView的設計:透過TemplateField的應用,將訂單明細用第二個GridView顯示在GridView1中的TemplateField中。
  3. 透過RowDataView使用欄位名稱取得GridView某欄位的內容

方式主要是透過外部的GridView1的RowDataBound事件,為訂單Orders的每個Row設定他內部的SqlDataSouce資料來源是GridView的哪個欄位。相關程式碼如下:

    Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
        '判斷是資料的Row才處理
        If e.Row.RowType = DataControlRowType.DataRow Then
            '透過FindControl取得裡面的SqlDataSouce物件
            Dim sds1 As SqlDataSource = CType(e.Row.Cells(1).FindControl("sdsOrderDetail"), SqlDataSource)

            '透過使用DataRowView,能夠用欄位名稱取得欄位的資料
            Dim rw As System.Data.DataRowView = CType(e.Row.DataItem, System.Data.DataRowView)
            '指定SelectParameter的內容
            sds1.SelectParameters(0).DefaultValue = rw.Item("OrderID").ToString

        End If
    End Sub

 

 

執行結果畫面如下:

GVGV01

相關程式碼如下:

http://vip2.blueshop.com.tw/topcat/DEMO/GVGV/GVGV.zip

 

設計過程錄影如下超連結:

http://vip2.blueshop.com.tw/topcat/DEMO/GVGV/GVGV.html

上面的連結已經失效,小喵特別另外再次錄製兩種方式

以下是這兩種方式:

 

 

 


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat