所以包仔就寫了一個簡單的範例如下:
GridTest.aspx
〈div〉
〈asp:Button ID="btnLoad" runat="server" Text="載入" OnClick="btnLoad_Click" /〉
〈asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"〉
〈asp:ListItem Value="0"〉開啟
〈asp:ListItem Value="1"〉關閉
〈/asp:DropDownList〉〈asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"〉〈Columns〉〈asp:BoundField HeaderText="活動日期" DataField="活動日期" 〉〈ItemStyle CssClass="textLeft" /〉〈HeaderStyle Width="45%" CssClass="textLeft" /〉〈/asp:BoundField〉〈asp:BoundField HeaderText="場次" DataField="場次" 〉〈ItemStyle HorizontalAlign="Left" /〉〈HeaderStyle HorizontalAlign="Left" Width="40%" /〉〈/asp:BoundField〉〈asp:BoundField DataField="序號" HeaderText="序號" /〉〈/Columns〉〈/asp:GridView〉〈/div〉
GridTest.aspx.cs
using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;
public partial class GridTest : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e) {if (!IsPostBack) {this.ViewState["MyData"] = MakeTable();GridBinding(this.ViewState["MyData"]);}}
private DataTable MakeTable() {DataTable MyTable = new DataTable("MyTable");DataColumn StartDate = new DataColumn();StartDate.ColumnName = "活動日期";DataColumn SiteRange = new DataColumn();SiteRange.ColumnName = "場次";DataColumn ID = new DataColumn();ID.ColumnName = "序號";MyTable.Columns.Add(StartDate);MyTable.Columns.Add(SiteRange);MyTable.Columns.Add(ID);return MyTable;}private void GridBinding(object sender){this.ViewState["MyData"] = sender;this.GridView1.DataSource = sender;this.GridView1.DataBind();}protected void btnLoad_Click(object sender, EventArgs e){DataTable dt = (DataTable)ViewState["MyData"];
DataRow newRow;newRow = dt.NewRow();
newRow["活動日期"] = "2008-08-01";newRow["場次"] = "不知哪一場";
int Sort = dt.Rows.Count + 1;
newRow["序號"] = Sort.ToString();
dt.Rows.Add(newRow);
this.ViewState["MyDate"] = dt;
GridBinding(this.ViewState["MyDate"]);}//選擇讓GridView序號欄位隱藏或是開啟protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e){if (DropDownList1.SelectedValue != "0"){this.GridView1.Columns[2].Visible = false;}else{this.GridView1.Columns[2].Visible = true;}}}
操作畫面如下:
...