Значение флажка пусто при использовании перечисления внутри повторителя (веб-формы ASP.NET) - PullRequest
0 голосов
/ 02 марта 2012

У меня есть повторитель, и я устанавливаю значение элемента управления html-флажок с помощью значение перечисления вместо жесткого кодирования магического числа. Когда я пытаюсь получить доступ к элементу управления html-флажка в обработчике события ItemCreated повторителя, значение является пустой строкой. Почему это и как я могу это исправить?

C # код

protected void Repeater1_ItemCreated(object sender, RepeaterItemEventArgs e)
{
    var myObject = e.Item.DataItem as MyObject;
    if (myObject != null)
    {
        var checkBox = e.Item.FindControl("checkbox1") as HtmlInputCheckBox         

        // The value is empty!
        var value = checkBox.Value;
    }
}

Не работает

<asp:Repeater ID="Repeater1" OnItemCreated="Repeater1_ItemCreated" runat="server">
    <ItemTemplate>      
        <input type="checkbox" id="checkbox1" value='<%# SomeEnum.Value %>' />
    </ItemTemplate>
</asp:Repeater>

Рабочая

<asp:Repeater ID="Repeater1" OnItemCreated="Repeater1_ItemCreated" runat="server">
    <ItemTemplate>      
        <input type="checkbox" id="checkbox1" value="1" />
    </ItemTemplate>
</asp:Repeater>

1 Ответ

1 голос
/ 02 марта 2012

ItemCreated запускается до ItemDataBound, а также на каждом постбеке для воссоздания того, что он контролирует, даже когда Repater больше не привязан к данным. Поэтому я не буду использовать ItemCreated, если вам нужен доступ к DataSource любого WebControl с привязкой к данным , например, Repeater.

Кроме того, установите флажок runat=server (или используйте ASP.NET CheckBox), если хотите find на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...