GridView 是 Web Forms 中最強大的資料呈現控制項。本節從零開始建構新聞列表頁面,包含 ObjectDataSource 資料繫結、自動分頁、自訂欄位、刪除確認,奠定後續編輯功能基礎。
| 類別 | 控制項 | 說明 |
|---|---|---|
| 資料源控制項 | SqlDataSource, ObjectDataSource, AccessDataSource, XmlDataSource, SiteMapDataSource | 封裝資料存取邏輯,提供 CRUD 方法 |
| 資料繫結控制項 | GridView, DetailsView, FormView, Repeater, DataList, ListView | 負責資料呈現,不直接存取資料庫 |
chuli.newschuliSelect: findallnews()public class newschuli {
private SqlConnection conn;
public DataSet findallnews() {
conn = dbconn.GetConnection();
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM news", conn);
DataSet ds = new DataSet();
sda.Fill(ds);
return ds;
}
// 刪除方法(供後續使用)
public static void deletenews(newsclass news) {
using (SqlConnection cn = dbconn.GetConnection()) {
cn.Open();
string sql = "DELETE FROM news WHERE ID = @id";
using (SqlCommand cmd = new SqlCommand(sql, cn)) {
cmd.Parameters.AddWithValue("@id", news.ID);
cmd.ExecuteNonQuery();
}
}
}
}
HorizontalAlign="Center" 置中AllowPaging="True" PageSize="4"DeleteMethod="deletenews"DataKeyNames="ID"OnClientClick="return confirm('確認刪除此資訊?');"

| 屬性 | 用途 | 範例 |
|---|---|---|
| DataSourceID | 關聯資料源控制項 ID | ObjectDataSource1 |
| DataKeyNames | 主鍵欄位(更新/刪除必需) | "ID" 或 "ID,Code" |
| AllowPaging | 啟用分頁 | True |
| PageSize | 每頁筆數 | 4 |
| AutoGenerateColumns | 自動產生欄位 | False(建議手動控制) |
| EmptyDataText | 無資料時顯示文字 | "目前無新聞資料" |
方法參數名稱必須與 GridView/DataKeyNames/輸入控制項 ID 一致:
// 刪除方法參數名稱 news 對應 DataKeyNames="ID" 的值
public static void deletenews(newsclass news) { ... }
// 更新方法參數對應
public static void modifynews(string title, string contents, int id) { ... }
// GridView 會自動對應 EditItemTemplate 中 ControlID="title" 的值
GridView + ObjectDataSource 是 Web Forms 快速建構資料管理介面的經典組合。掌握資料源設定、欄位自訂、分頁、刪除確認等核心技巧,可大幅減少重複程式碼。下一節將進階實作編輯/更新與輸入驗證功能。