(補充本書Ch. 9-2節的範例)
同一個網頁,兩個GridView。但有多個P.K.值的情況
特別感謝讀者 Binsh來信詢問,我才發現這一段我好像沒講到。 現在補給大家
這個範例,我會立刻加入書本的「勘誤表」,當作 9-2節的補充習題。 謝謝!
本書 (上集) Ch. 9-2節的範例,示範的是「單一主索引鍵」的狀況 --
請看 [習題] [主細表 / 主表明細]同一個網頁裡面,兩個GridView作關聯對應(不寫程式,只靠SqlDataSource完成)
本範例的執行畫面:
--------------------------------------------------------------------------------------------------
依照這個問題,我們繼續思考一下:
如果(畫面上方)第一個 GridView1,本身有多個主索引鍵(P.K.)那該怎麼辦?
我們可以自己寫程式,試一試。
範例 GridView1_Multi_PK.aspx 已經設定了 GridView1的 P.K.主索引鍵有兩個。如下圖
那麼,我們要擷取這兩個 P.K.值,後置程式碼應該寫成:
2
3 Label1.Text = "第一個主索引鍵 == " & GridView1.SelectedDataKey.Values(0).ToString()
4 Label2.Text = "第二個主索引鍵 == " & GridView1.SelectedDataKey.Values(1).ToString()
5
6 Label3.Text = "GridView1.SelectedValue 主索引鍵 == " & GridView1.SelectedValue.ToString()
7
8 End Sub
請注意,我們常用的 GridView1.SelectedValue,只能取出第一個PK。如果有多個PK,那就不能用這行程式碼了。
請改用上面的 GridView1.SelectedDataKey.Values(索引號碼)
因為電腦都是從「零」算起,所以第一個PK主索引鍵,編號是零!第二個的編號是 1.....以此類推。
--------------------------------------------------------------------------------------------------
瞭解了上面的程式之後,我們可以繼續 9-2節的那個範例([習題] [主細表]同一個網頁裡面,兩個GridView作關聯對應(不寫程式,只靠SqlDataSource完成) )
GridView1 有多個 P.K. 主索引鍵時,可能就要自己動手寫程式來解決 Master-Detail(主細表)的問題了
本範例 GridView_Multi_PK_2.aspx 畫面設計很簡單,
但要注意 -- 底下的 GridView2,是空的!不搭配任何 SqlDataSource喔!
程式也不難,同一個範本改一下即可。(關於ADO.NET的程式,本書第十四章有完整說明)
本範例 GridView_Multi_PK_2.aspx 後置程式碼如下:
02 '----自己寫的----
03 Imports System
04 Imports System.Web.Configuration
05 Imports System.Data
06 Imports System.Data.SqlClient
07 '----自己寫的----
08
09
10 Partial Class test_GridView_GridView_Multi_PK_2
11 Inherits System.Web.UI.Page
12
13 Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.SelectedIndexChanged
14 '====自己手寫的程式碼, DataAdapter / DataSet ====(Start)
15 '----上面已經事先寫好 Imports System.Web.Configuration ----
16 '----連結資料庫
17 Dim Conn As New SqlConnection(WebConfigurationManager.ConnectionStrings("寫在Web.Config檔裡面 的 DB連結字串").ConnectionString)
18
19 Dim myAdapter As SqlDataAdapter
20 myAdapter = New SqlDataAdapter("select * from test where id = " & GridView1.SelectedDataKey.Values(0) & " and title = '" & GridView1.SelectedDataKey.Values(1) & "'", Conn)
21
22 Dim ds As New DataSet
23
24 Try '==== 以下程式,只放「執行期間」的指令!=================
25 'Conn.Open() '---- 不用寫,DataAdapter會自動開啟
26
27 myAdapter.Fill(ds, "test") '---- 這時候執行SQL指令。取出資料,放進 DataSet。
28
29 GridView2.DataSource = ds '----標準寫法 GridView2.DataSource = ds.Tables("test").DefaultView ----
30 GridView2.DataBind()
31
32 Catch ex As Exception
33 Response.Write("<HR/> Exception Error Message---- " + ex.ToString())
34 Finally
35 '---- 不用寫,DataAdapter會自動關閉
36 'If (Conn.State = ConnectionState.Open) Then
37 'Conn.Close()
38 'Conn.Dispose()
39 'End If
40 End Try
41 End Sub
42 End Class
完整範例,由此下載:GridView_Multi_PK.rar
特別感謝讀者 Binsh來信詢問,我才發現這一段我好像沒講到。
現在補給大家
這個範例,我會立刻加入書本 (上集) 的「勘誤表」,當作 Ch. 9-2節的補充習題。 謝謝!
本系列文章,共有三篇,請看下一篇 --- [習題] [主細表]同一個網頁裡面,兩個GridView作關聯對應#3 (改用Session,盡量不寫程式)
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
線上課程教學,遠距教學 (Web Form 約 51hr) https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015
線上課程教學,遠距教學 (ASP.NET MVC 約 140hr) https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab
寫信給我,不要私訊 -- mis2000lab (at) yahoo.com.tw 或 school (at) mis2000lab.net
(1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A
(2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I
[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm 。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b
ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。
......... facebook社團 https://www.facebook.com/mis2000lab ......................
......... YouTube (ASP.NET) 線上教學影片 https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/
Blog文章 "附的範例" 無法下載,請看 https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download
請看我們的「售後服務」範圍(嚴格認定)。
......................................................................................................................................................
ASP.NET MVC => .NET Core MVC 線上教學 ...... 第一天課程 完整內容 "免費"讓您評估 / 試聽
[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講 事先錄好的影片,並非上課側錄! 觀看時,有如「一對一」面對面講課。