【问题标题】:ASP C# CheckBox within DetailsViewDetailsView 中的 ASP C# CheckBox
【发布时间】:2017-09-03 05:22:05
【问题描述】:

我的 aspx 页面中有一个 DetailsView,在项目模板列中有两个复选框。我在 DetailsView 之外有一个按钮。我需要的是,当我单击按钮时,它应该验证两个复选框是否都被选中并触发 c# 命令。请帮忙。让我在下面粘贴代码:

.aspx

 <div>
        <asp:Button ID="Button3" runat="server" Text="Button" OnClick="Button3_Click" />
    </div>
    <asp:DetailsView ID="DetailsView2" runat="server" Height="50px" Width="125px" AutoGenerateRows="False" DataSourceID="SqlDataSource2">
        <Fields>
            <asp:TemplateField HeaderText="StudentName" SortExpression="StudentName">
                <ItemTemplate>
                     <asp:CheckBox ID="CheckBox1" runat="server" />
                    <asp:Label ID="Label1" runat="server" Text='<%# Bind("StudentName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Email" SortExpression="Email">

                <ItemTemplate>
                    <asp:CheckBox ID="CheckBox2" runat="server" />
                    <asp:Label ID="Label2" runat="server" Text='<%# Bind("Email") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Fields>
    </asp:DetailsView>

C#

 protected void Button3_Click(object sender, EventArgs e)
    {

    }

【问题讨论】:

    标签: c# asp.net detailsview


    【解决方案1】:

    DetailsView 是一个数据绑定控件,它可以容纳无限数量的行,而不仅仅是一个。

    如果您想验证两个复选框均已选中,则在每一行中,您需要遍历DetailsView 的所有行,并在每一行上从FindControl 转换CheckBox

    protected void Button3_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < DetailsView2.Rows.Count; i++)
        {
            CheckBox chk1 = (CheckBox)DetailsView2.Rows[i].FindControl("CheckBox1");
            CheckBox chk2 = (CheckBox)DetailsView2.Rows[i].FindControl("CheckBox2");
    
            if (chk1.Checked && chk2.Checked)
            {
               // Do Stuff
            }
        }
    }
    

    如果您想验证 所有 复选框是否在 所有行 中进行检查,请执行以下操作:

    protected void Button3_Click(object sender, EventArgs e)
    {
        // Declare a boolean flag
        bool AllCheckBoxesAreChecked = true;
    
        for (int i = 0; i < DetailsView2.Rows.Count; i++)
        {
            CheckBox chk1 = (CheckBox)DetailsView2.Rows[i].FindControl("CheckBox1");
            CheckBox chk2 = (CheckBox)DetailsView2.Rows[i].FindControl("CheckBox2");
    
            if (!chk1.Checked || !chk2.Checked)
                AllCheckBoxesAreChecked = false;
        }
    
        // Now use the flag
        if (AllCheckBoxesAreChecked)
        {
            // Do Stuff
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      • 2011-09-23
      • 2015-10-21
      • 2011-07-25
      • 2017-03-16
      • 2015-10-11
      • 1970-01-01
      相关资源
      最近更新 更多