c# - ASP.NET 是否在转发器中选中了复选框?

标签 c# asp.net

我有一个中继器,里面有 html 表格。在 html 表格中,我有一个带有复选框的表格单元格。

我试图在单击按钮后从用户那里获取选中的行,但结果始终为空。

asp.net 标记:

<table id="tbl1" class="table">
    <tr>
        <th>test 1</th>
        <th>test 2</th>
        <th>test 3</th>
        <th>test 4</th>
        <th>Select</th>
    </tr>
    <asp:Repeater ID="rep" runat="server">
        <ItemTemplate>
            <tr id="tr1" runat="server">
                <td>
                    <asp:Label ID="lbl1" runat="server" Text='<%#Eval("test1") %>'>' ></asp:Label>
                </td>
                <td>
                    <asp:Label ID="lbl2" runat="server" Text='<%#Eval("test2") %>'>' ></asp:Label>
                </td>
                <td>
                    <asp:Label ID="lbl3" runat="server" Text='<%#Eval("test3") %>'>' ></asp:Label>
                </td>
                <td>
                    <asp:Label ID="lbl4" runat="server" Text='<%#Eval("test4") %>'>' ></asp:Label>
                </td>
                <td id="td1" runat="server">
                    <asp:CheckBox ID="Select" runat="server" />
                </td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>
</table>
<asp:Button ID="btnSelect" runat="server" Text="Go" OnClick="btnSelect_Click" />

C#代码:

protected void btnSelect_Click(object sender, EventArgs e)
{
    foreach (RepeaterItem rpt in rep.Items)
    {
        CheckBox ckb = (CheckBox)rpt.FindControl("Select");

        if (ckb.Checked) // Always Null
        {
            //
        }
        else
        {
            //
        }
    }
}

最佳答案

问题是您在转发器项目中有另一个服务器控件。复选框不直接位于表行中的转发器项目中。您可以像这样提取复选框

CheckBox ckb = (CheckBox)rpt.FindControl("tr1").FindControl("Select");

if (ckb.Checked)
...

当然这很糟糕,因为更改布局会破坏您的代码。要解决这个问题,您可以编写一个递归的 FindControl,但它需要做更多的工作。

关于c# - ASP.NET 是否在转发器中选中了复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27548324/

相关文章:

c# - 阅读开始前发送的信息?

c# - 使用 System.Linq.Dynamic.DynamicExpression.ParseLambda 时出错

asp.net - 查找最终/有效的 web.config 值(来自继承的配置)

asp.net - Silverlight 中断 JQuery 动画

c# - 一旦我使用 dotMemory 在 .NET 中获得快照,第 2 代内存就会被清除

c# - 如何使用 Experitest 检查 Android( native )应用程序的密码字段的屏蔽? -

c# - 转换器不点火

c# - 以编程方式更改文本框的 Css 类

c# - 当 IIS 应用程序池身份用户区域设置设置为 ApplicationPoolIdentity 时,如何设置它

jquery - 如何通过 Jquery 禁用 asp listitem 复选框