簡體   English   中英

如何將動態n復選框列添加到gridview ASP.NET

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM