[英]How to add dynamic n checkbox columns to gridview ASP.NET
例如: mypage.aspx?num=xxx
如何通過代碼隱藏在mypages中向Gridview添加num
復選框列?
我已經使用參數typeof(bool)
將num
列添加到Datatable但是當我加載mypage時,復選框被禁用,因此我無法檢查它們。
這是我的網格aspx代碼
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false">
<Columns>
</Columns>
</asp:GridView>
首先在gridview中添加num
個模板字段
protected void Page_PreInit(object sender, EventArgs e)
{
int num = Request.QueryString["num"];
for (int i = 0; i < num; i++)
{
TemplateField tf = new TemplateField();
tf.HeaderText = "Status";
gv.Columns.Add(tf);
}
}
添加模板場后,現在我們將向gridview添加復選框。 我們編寫一個函數來添加復選框。 下面是代碼
private void AddCheckBox()
{
int num = Request.QueryString["num"];
for (int i = 0; i < num; i++)
{
foreach (GridViewRow row in gv.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
CheckBox cb = new CheckBox();
cb.Checked = true;
row.Cells[i].Controls.Add(cb);
}
}
}
}
現在將此函數放在grid databound事件中。
protected void gv_DataBound(object sender, EventArgs e)
{
AddCheckBox();
}
最后還調用頁面加載事件中的函數,因此第一次加載網格時會顯示復選框
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
AddCheckBox();
}
}
要檢查我的代碼:我將綁定的feild添加到網格視圖並使用數據表綁定網格視圖:
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Data" HeaderText="Data" />
</Columns>
</asp:GridView>
並在page_load事件后面的代碼中添加以下代碼
DataTable dt = new DataTable();
dt.Columns.Add("Data");
DataRow dr = dt.NewRow();
dr[0] = "Test";
dt.Rows.Add(dr);
gv.DataSource = dt;
gv.DataBind();
並在AddCheckBox函數中進行了1次更改
for (int i = 1; i < num + 1; i++)
之所以進行上述更改是因為我在網格視圖列的索引0處有一個數據綁定字段,因此我將其更改為從1開始。
這是結果(頁面輸出)
Data Status Status Status Status Status Status Status Status Status Status
Test Checked Checked Checked Checked Checked Checked Checked Checked Checked Checked
選中已選中已選中復選框
采用:
Request.QueryString["num"]
獲取URL中num的值。 然后迭代num次,每次都向你的GridView添加一個CheckBoxField。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.