繁体   English   中英

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

[英]C# ASP.NET Checkbox to enable/disable

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

我正在制作一个网络表单来展示广告。

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

假设这是数据表:

广告网址文字关键字复选框

test.com bla blaa
test2.com bla blaa

如何为每个URL添加一个复选框,以便如果选中该复选框将被发布,否则将不会被发布?

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

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

var dgv = new DataGridView();
dgv.DataSource = dt;

在SQL中,类型称为BIT

它将采用true / false 1/0值

您问题的最佳范例。

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

使用一些使用DataTable的伪记录填充GridView。

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();
    }
}

在这种技术中,必须在<%%>标记内写入条件。 在下面,您将注意到我将Status字段的值与字符串Present进行匹配,因此,对于所有Status为Present的记录,将启用CheckBox,而对于其余记录将被禁用。

<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>

另一种方法是利用GridView的OnRowDataBound事件。 因此,首先需要将OnRowDataBound事件处理程序分配给GridView,如下所示。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="OnRowDataBound">
<Columns>
    <asp:TemplateField>
        <ItemTemplate>
            <asp:CheckBox ID="CheckBox1" runat="server" />
        </ItemTemplate>
    </asp:TemplateField>
    <asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="150" />
    <asp:BoundField DataField="Status" HeaderText="Status" ItemStyle-Width="100" />
</Columns>
</asp:GridView>

然后,您需要在后面的代码中实现OnRowDataBound事件处理程序,然后通过将值与Status字段进行匹配来有条件地启用和禁用CheckBox。 此处,“状态”字段的值与字符串“不存在”匹配,如果匹配,则禁用“复选框”。

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;
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM