2013-08-30 119 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字段

相關問題