gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:13:16 30 4
gpt4 key购买 nike

我有一个中继器,里面有 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com