Сделайте asp:TextBox внутри Repeater и запустите ItemCommand Repeater при нажатии Enter

У меня есть повторитель, который содержит TextBoxes и LinkButtons. Когда я нажимаю LinkButton, событие ItemCommand срабатывает ОК. Когда я нажимаю Enter в любом из текстовых полей, отправляется форма, внутри которой находится повторитель. В идеале, я бы хотел, чтобы при вводе в текстовое поле выполнялось то же действие, что и при нажатии кнопки LinkButton, поэтому я решил, что либо мне нужно программно "щелкнуть" по кнопке LinkButton при нажатии клавиши ввода, либо мне нужен способ запустить то же событие ItemCommand (с соответствующим именем / аргументом команды), которое выполняет LinkButton

Может ли кто-нибудь дать мне понять, как этого добиться? Спасибо

1 ответ

Решение

Вот возможный подход. В основном вы заверните TextBox а также LinkButton в панель. Панель предоставляет возможность указать кнопку по умолчанию - это кнопка, которая будет нажиматься, когда пользователь нажимает Enter в текстовом поле внутри этой панели.

<ItemTemplate>
    <asp:Panel ID="Panel1" runat="server" DefaultButton="LinkButton1">
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>    
        <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Cmd" Text="FireCmd"/>
    </asp:Panel>
</ItemTemplate>

Помните, что в FF может быть проблема с LinkButton по умолчанию - вот пост, описывающий как проблему, так и решение. Однако это может быть устаревшим - пост был написан в 2007 году, с тех пор все могло измениться.

Другие вопросы по тегам