我想在DataTable和bind ti网格视图中添加复选框。
所以我试试这个。
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();
但是这样就出来了
我想添加复选框。 我该怎么办?
答案 0 :(得分:1)
只需在datatable中添加一个布尔字段,它就会被映射为datagridview中的复选框字段。
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("IsActive", typeof(bool)));
现在,IsActive字段将在网格视图上映射为Checkbox。
答案 1 :(得分:1)
您可以执行以下操作
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:CheckBoxField HeaderText="Select" DataField="IsActive" />
</Columns>
</asp:GridView>
不要将复选框字段添加到数据表。只需为其添加一个布尔字段并将其绑定到网格视图的复选框字段
答案 2 :(得分:1)
将您的代码更改为:
为boolean类型的每个角色创建列
foreach (var item in RoleName)
{
DataColumn dc = new DataColumn(item.RoleName, typeof(bool));
dt.Columns.Add(dc);
}
然后更改代码,在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();
答案 3 :(得分:0)
您必须添加Boolean
类型的字段并在DataTable中指定bool值,然后将该DataTable与网格视图绑定。
尝试关注this Link
答案 4 :(得分:0)
您需要创建一个选项来启用它。默认情况下,配置器处于禁用状态。您可以按如下方式执行此操作。
<script type="text/javascript">
function fnSelectAll() {
const disabledAllCheckboxInPage =
Array.from(document.querySelectorAll("input[type='checkbox']"))
disabledAllCheckboxInPage.forEach(item => item.disabled = false)
}
</script>
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<input id="chkAll" type="checkbox" onclick="fnSelectAll()" />
</HeaderTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
答案 5 :(得分:0)
我找到了另一种方法来解决您的问题,之后 gridview1.DataBind();输入下面的代码。
gridview1.DataSource = dt;
gridview1.DataBind ()
foreach (GridViewRow row in gridview1.Rows)
{
for (int i = 0; i <= row.Cells.Count - 1; i++)
{
if (i > 1)
{
CheckBox check = (row.Cells[i] as DataControlFieldCell).Controls[0] as CheckBox;
check.Enabled = true;
}
}
}