0

我有一个转发器,在标签里面我有一个复选框,.Checked我想在转发器的 ItemDataBound 事件中设置哪个属性。问题是args.Item.FindControl("checkboxSelect");返回 me null

这是HTML:

<asp:Repeater ID="productRepeater" runat="server" OnItemDataBound="productRepeater_ItemDataBound">
    <ItemTemplate>
        <tr class="hand">                                
            <td class="hyperLink center-text width50px">
                <fieldset data-role="controlgroup" id="divCheckbox">
                    <input type="checkbox" name="checkboxSelect" id="checkboxSelect" class="custom" />
                    <label for="checkboxSelect">
                    </label>
                </fieldset>                                    
            </td>
        </tr>
    </ItemTemplate>
</asp:Repeater>

和 productRepeater_ItemDataBound 方法:

protected void productRepeater_ItemDataBound(object sender, RepeaterItemEventArgs args)
{
    CheckBox checkboxSelect = (CheckBox)args.Item.FindControl("checkboxSelect");
}

我认为导致问题的原因是<fieldset data-role="controlgroup" id="divCheckbox">,因为在<td>中继器中的另一个(未显示)中,我找到控件没有问题。有什么建议如何在当前情况下获得控制权?

4

1 回答 1

4

FindControl只能找到服务器端控件,而不是普通的 HTML 标记。因此,在这个特定的中继器中,它不可能找到任何东西。但是,您始终可以使用以下命令将 HTML 标记转换为服务器端控件runat

<input runat="server" type="checkbox" name="checkboxSelect" id="checkboxSelect" class="custom" />

现在每个都checkboxSelect将被添加到控件集合中,并且FindControl能够找到它。

于 2013-06-26T14:37:55.800 回答