1

前任:mypage.aspx?num=xxx

如何通过代码隐藏将num复选框列添加到mypages 中的Gridview ?

我已经使用参数向Datatablenum添加了列,但是当我加载 mypage 时,复选框被禁用,因此我无法检查它们。typeof(bool)

4

2 回答 2

4

这是我的网格 aspx 代码

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false">
    <Columns>           
    </Columns>
</asp:GridView>

首先将num模板字段的数量添加到您的gridview

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);
            }
        }
    }
}

现在将此函数放在您的网格数据绑定事件中。

protected void gv_DataBound(object sender, EventArgs e)
{
    AddCheckBox();
} 

最后还在页面加载事件中调用该函数,因此第一次在网格加载时显示复选框已选中

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        AddCheckBox();
    } 
}

要检查我的代码: 我将绑定字段添加到网格视图并将网格视图与数据表绑定:

<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

Checked 用于复选框被选中

于 2012-07-27T10:30:45.210 回答
0

采用:

Request.QueryString["num"]

获取 URL 中 num 的值。然后迭代 num 次,每次都将 CheckBoxField 添加到您的 GridView 中。

于 2012-07-27T09:57:56.507 回答