GridView 動態產生並支援分頁及編輯

GridView 動態產生並支援分頁及編輯

常遇到很多人論譠中詢問「Web Form 動態建立控制項」的問題,一般得到的解答都是在 Page Load 中動態建立控制項,並自行維護控制項狀態。

可是筆者通常建議不要寫在 Page Load,因為要自行維護控制項狀態相當麻煩;比較好的方式要寫在 Paeg Init 中,動態建立的控制項就會如同設計階段的控制項一樣,有辨法自行維護狀態。關於動態建立控制項的部分,可以先參考 在 Web Form 動態建立控制項的正確方法 這篇文章。

以動態產生 GeidView 為例,很多例子都是教導動態建立一個 GridView 控制項,設定 GridView.DataSource 屬性後,再進行 DataBind 的動作;這種方法對於 GridView 呈現靜態的資料是可以的,但要做到分頁就要自行再撰寫程式碼,而要讓 GridView 可編輯那就更麻煩了。

所以下面的例子就是在動態產生 GridView 控制項,且 GridView 支援分頁及編輯的動作。下面的程式碼中動態建立的 SqlDataSource 控制項,並指定 SelectCommand 及 UpdateCommand;而動態建立的 GirdView 是使用 DataSourceID 繫結至 SqlDataSource 控制項。

注意一點,GridView 設定好 DataSourceID 後,無需去做 DataBind 的動作;就如果在設計階段拖曳 GridView 去繫結 SqlDataSource,不用去做 DataBind 一樣。因為 GridView 會自行判斷需要 DataBind 的時機。

接下來看看執行的結果,測試一下分頁的效果是否正常。如下圖所示,無需撰寫分頁程式碼,分頁功能操作正常。

再來測試 GridView 編輯的功能,如下圖所示,編輯功能也能正常操作。

ASP.NET 魔法學院