C#ASP.NET复选框以启用/禁用

C#ASP.NET复选框以启用/禁用,c#,asp.net,aspxgridview,C#,Asp.net,Aspxgridview,我对c#,asp.net非常陌生 我正在制作一个网页表单来显示广告 我创建了一个简单的SQL数据库并添加了一个gridview 假设这是数据表: 广告URL文本关键字复选框 test.com bla blaa test2.com bla blaa 如何为每个URL添加一个复选框,这样,如果选中,它将被发布,如果不选中,它将不会被发布?您的数据表将需要一个布尔列。然后,当您将DataTable绑定到GridView时,它将自动具有复选框 var dt = new DataTable(); dt.C

我对c#,asp.net非常陌生

我正在制作一个网页表单来显示广告

我创建了一个简单的SQL数据库并添加了一个gridview

假设这是数据表:

广告URL文本关键字复选框

test.com bla blaa
test2.com bla blaa


如何为每个URL添加一个复选框,这样,如果选中,它将被发布,如果不选中,它将不会被发布?

您的数据表将需要一个布尔列。然后,当您将DataTable绑定到GridView时,它将自动具有复选框

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

var dgv = new DataGridView();
dgv.DataSource = dt;
在SQL中,该类型被称为 钻头


它将以真/假1/0值作为您问题的最佳示例

该复选框可以通过以下两种方式在GridView中动态启用和禁用 1.使用Eval函数。 2.使用OnRowDataBound事件

GridView是使用一些使用DataTable的虚拟记录填充的

using System.Data;
protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        DataTable dt = new DataTable();
        dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Id"), new DataColumn("Name"), new DataColumn("Status") });
        dt.Rows.Add(1, "John Hammond", "Absent");
        dt.Rows.Add(2, "Mudassar Khan", "Present");
        dt.Rows.Add(3, "Suzanne Mathews", "Absent");
        dt.Rows.Add(4, "Robert Schidner", "Present");
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }
}
在这种技术中,必须在标记中写入条件。在下面,您会注意到我正在将状态字段的值与字符串Present进行匹配,因此对于状态为Present的所有记录,复选框将被启用,而对于剩余的记录,复选框将被禁用

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
    <asp:TemplateField>
        <ItemTemplate>
            <asp:CheckBox ID="CheckBox1" runat="server" Enabled='<%# Eval("Status").ToString().Equals("Present") %>' />
        </ItemTemplate>
    </asp:TemplateField>
    <asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="150" />
    <asp:BoundField DataField="Status" HeaderText="Status" ItemStyle-Width="100" />
</Columns>
</asp:GridView>
protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        CheckBox CheckBox1 = (e.Row.FindControl("CheckBox1") as CheckBox);
        if (e.Row.Cells[2].Text == "Absent")
        {
            CheckBox1.Enabled = false;
        }
    }
}
protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        CheckBox CheckBox1 = (e.Row.FindControl("CheckBox1") as CheckBox);
        if (e.Row.Cells[2].Text == "Absent")
        {
            CheckBox1.Enabled = false;
        }
    }
}