2012-07-27 65 views
1

例:mypage.aspx?num=xxx如何添加动态ň复选框列的GridView ASP.NET

我怎么能一个num复选框列在mypages通过后台代码添加到的GridView

我又增加了num数据表与参数typeof(bool),但是当我装我的空间,该复选框被禁用的,所以我不能检查。

+0

检查我的答案,它会工作。 – 2012-07-27 10:49:56

回答

3

这是我网格的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 

检查用于复选框被检查

+0

非常感谢。非常清楚 – 2012-07-27 13:19:56

+0

@KahnCse不用客气。也投票了这个答案。 – 2012-07-27 13:20:50

+0

@KahnCse为什么你撤销我接受的答案? – 2012-09-15 13:04:25

0

用途:

Request.QueryString["num"] 

得到的URL num的值。然后迭代num次,每次向GridView添加一个CheckBoxField。