GridView 與 DetailsView 連動 - 繫結同一個 SqlDataSource
若在頁面中包含了一個 GridView 及 DetailsView 控制項,當 GridView 選取某一筆時,希望在 DetailsView 中顯示那一筆的詳細資料。一般的作法會讓 GridView 及 DetailsView 會繫結各別獨立的 SqlDataSoruce,當 GridView 選取時就以主鍵去對 DetailsView 的 SqlDataSource 做篩選資料的動作。
不過本文的作法不同,讓 GirdView 與 DetailsView 繫結到同一個 SqlDataSource,而且只要撰寫很少的程式碼,就可以達到 GridView 與 DetailsView 連動的需求。
以 Northwind 資料庫的 Products 資料表為資料來源,首先在頁面放置一個 SqlDataSource 控制項。頁面左邊放置一個 GridView,GridView啟用分頁及選取。頁面右邊放置一個 DetailsView,並啟用編輯。GridView 與 DetailsView 繫結到同一個 SqlDataSource。
ASPX檔案的內容如下
當 GridView 選取資料列時會觸發 SelectedIndexChanging 事件,在這個事件中以 GridView 的 NewSelectedIndex 為基準去計算 DetailsView 對應的 PageIndex 即可。
執行結果如下,首先 GirdView 切換到第2頁,選取 GirdView 中 ProductID 為 15 的資料列時,DetailsView 也同步顯示同一筆資料。可在 DetailsView 中編輯此筆資料儲存後,GirdView 的資料也會同步更新。