2013-08-30 116 views
0

我想添加DataTable中的复选框和绑定ti网格视图。如何在DataTable中添加复选框?

所以我尝试这样。

DataTable dt = new DataTable("UserAcess"); 

DataColumn dc1 = new DataColumn("PageName"); 
dt.Columns.Add(dc1); 

foreach (var item in RoleName) 
{ 
    DataColumn dc = new DataColumn(item.RoleName); 
    dt.Columns.Add(dc);      
} 

int i=0, j = 0; 
foreach (var page in pageName) 
{ 
    i +=1; 
    DataRow dr = dt.NewRow(); 

    dr["PageName"] = page.PAGE_NAME; 

    j = 0;     

    foreach (var role in RoleName) 
    {     
     dt.Columns.Add(new DataColumn("che" + i.ToString() + j.ToString(), typeof(System.Web.UI.WebControls.CheckBox)));       
     j += 1; 
     CheckBox ck = new CheckBox();     
     ck.Checked = true;     
     dr[role.RoleName] = ck;     

    } 
    dt.Rows.Add(dr); 
}  
NewDataGrid.DataSource = dt; 
NewDataGrid.DataBind(); 

但是却出把这样

enter image description here

我想补充的复选框。 我该怎么办?

+0

而不是在数据表中使用复选框,您必须使用网格视图中的复选框,并提供值从数据表复选框.. – Rahul

+0

我不知道该怎么做。你能解释一下吗? – user1348351

+0

@ user1348351在下面看到我的回答 – Ehsan

回答

1

你的代码改成这样:

类型的每个角色布尔

foreach (var item in RoleName) 
{ 
    DataColumn dc = new DataColumn(item.RoleName, typeof(bool)); 
    dt.Columns.Add(dc);      
} 

然后改变你的代码中创建列你stroring复选框中的DataColumn存储布尔值true/false值列

foreach (var role in RoleName) 
{     
    dr[role.RoleName] = true;  
} 

终极密码:

DataTable dt = new DataTable("UserAcess"); 

DataColumn dc1 = new DataColumn("PageName"); 
dt.Columns.Add(dc1); 

foreach (var item in RoleName) 
{ 
    DataColumn dc = new DataColumn(item.RoleName, typeof(bool)); 
    dt.Columns.Add(dc);      
} 

foreach (var page in pageName) 
{ 
    DataRow dr = dt.NewRow(); 
    dr["PageName"] = page.PAGE_NAME; 

    foreach (var role in RoleName) 
    {     
     dr[role.RoleName] = true; 
    } 
    dt.Rows.Add(dr); 
}  

NewDataGrid.DataSource = dt; 
NewDataGrid.DataBind(); 
+0

非常感谢你 – user1348351

+0

你能告诉我如何启用复选框吗?默认情况下,所有复选框都是禁用的,所以用户不能编辑它。你能告诉如何启用复选框吗? – user1348351

+0

您是否尝试编辑并保存复选框数据?使用编辑命令按钮,当你点击编辑它应该显示复选框在启用模式。 –

1

只需添加一个布尔字段在数据表,它会被映射为datagridview的复选框字段。

DataTable dt = new DataTable(); 
dt.Columns.Add(new DataColumn("IsActive", typeof(bool))); 

现在IsActive字段将被映射为网格视图上的复选框。

+0

如何使用上面的代码在这里显示动态列的复选框? OP具有基于角色的动态列。 –

+0

@rs。 OP可以将列添加到数据表并重新绑定。那有什么问题? – Ehsan

0

你必须添加一个字段Boolean类型和分配DataTable中布尔值,然后绑定网格视图是数据表。

尝试按照this Link

1

你可以做到这一点,如下

<asp:GridView ID="GridView1" runat="server"> 
      <Columns> 
       <asp:CheckBoxField HeaderText="Select" DataField="IsActive" /> 
      </Columns> 
     </asp:GridView> 

不要复选框字段添加到数据表。就在布尔字段添加到它并将其绑定到网格视图的CheckBoxField字段

相关问题