2017-02-21 2 views
3

Мой вопрос довольно прост, есть ли способ связать ключ «enter» с asp net linkbutton в репитере? (Iv'e пытался DefaultButton собственность, но он не работает Вот мой код:.обязательный ввод ключа к asp net linkbutton повторитель

ASPX:

<asp:Repeater runat="server" DataSource='<%# Eval("Visitor") %>' OnItemCommand="rptVisitedItem_OnItemCommand" OnItemDataBound="rptVisitedItem_OnItemDataBound" ID="rptVisitedItem"> 
    <ItemTemplate> 
     <td> 
      <asp:Panel Style="float: left;" runat="server" ID="editPanelGroup" Visible='<%# SelectId == Convert.ToInt32(Eval("VisitID")) %>'> 
       <asp:PlaceHolder runat="server" ID="pHolder" /> 
      </asp:Panel> 
      <asp:Panel DefaultButton="btnGroup" runat="server" ID="editLinkButton" Visible='<%# SelectId != Convert.ToInt32(Eval("VisitID")) %>'> 
       <asp:LinkButton ID="btnGroup" ForeColor='<%# Eval("VisitorGroupID") != DBNull.Value ? Color.Black : Color.Empty %>' ToolTip="TRNSLTVisitorGroupName" runat="server" Text='<%# Eval("VisitorGroupID") == DBNull.Value ? "TRNSLTVisitorGroupName" : Eval("VisitorGroupName") %>' CommandName="selectGroup" CommandArgument='<%# Eval("VisitID") %>' /> 
      </asp:Panel> 
     </td> 
    </ItemTemplate> 
</asp:Repeater> 

C#:

private DataSet _groups; 
protected void rptVisitedItem_OnItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    var panel = (Panel) e.Item.FindControl("editLinkButton"); 
    var panelT = (Panel) e.Item.FindControl("editPanelGroup"); 
    var ph = (PlaceHolder)e.Item.FindControl("pHolder"); 
    var lbn = (LinkButton)e.Item.FindControl("btnGroup"); 

    panel.DefaultButton = lbn.ID; 
    panelT.DefaultButton = lbn.ID;   
} 

Есть в любом случае сделать это с JavaScript или ? JQuery возможно

+0

какая кнопка? будет там более одной кнопки. – levent

+0

Ссылка, которую вы видите с идентификатором = «btnGroup» – Malphai

ответ

1

В вашем репитере нет ничего, чтобы зафиксировать нажатие клавиши enter. Обычно DefaultButton связан с одним или несколькими элементами управления TextBox.

Поведение браузера по умолчанию - это сообщение формы, когда enter нажата внутри элемента input type=text. Таким образом, назначение кнопки по умолчанию обеспечит правильную обработку формы с помощью aspnet.

Если вы попробуете фрагмент ниже, вы увидите, что он работает, даже без кода в rptVisitedItem_OnItemDataBound. Нажмите клавишу ввода, если внутри текстового поля, и соответствующая кнопка btnGroup будет запущена.

<asp:Panel DefaultButton="btnGroup" runat="server" ID="editLinkButton"> 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
    <asp:LinkButton ID="btnGroup" runat="server" Text="Test me" CommandName="selectGroup" CommandArgument='<%# Eval("VisitID") %>' /> 
</asp:Panel> 
1

Пожалуйста, попробуйте это (требует JQuery):

using System.Web.UI.WebControls; 

.... 

protected void rptVisitedItem_OnItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    .... 
    LinkButton lbn = (LinkButton)e.Item.FindControl("btnGroup"); 
    lbn.Attributes.Add("onkeypress", "__doPostBack('<%= lbn.UniqueID %>', '')"); 
    .... 
} 
+1

Дополнительная информация: Невозможно наложить объект типа «System.Web.UI.WebControls.LinkButton» на тип «System.Web.UI» .HtmlControls.HtmlInputButton. – Malphai

+0

Попробуйте отредактированный ответ –

+0

Это тоже не сработало. – Malphai