绑定输入密钥到asp net linkbutton repeater

时间:2017-02-21 09:01:42

标签: javascript c# jquery asp.net

我的问题很简单,无论如何都要绑定"输入"转发器中asp网络链接的关键? (我已尝试DefaultButton属性,但它不起作用。这是我的代码:

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来做这件事吗?

2 个答案:

答案 0 :(得分: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 :(得分:1)

您的转发器中似乎没有任何内容可以捕获enter键的按键。通常,DefaultButton与一个或多个TextBox控件相关联。

enter元素中按下input type=text时,默认浏览器行为是表单帖子。因此,分配默认按钮将确保使用aspnet处理正确的表单。

如果您尝试下面的代码段,即使没有rptVisitedItem_OnItemDataBound中的代码,您也会看到它有效。在文本框内按Enter键,将触发相应的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>