我正在尝试将用户控件上的按钮设置为页面上的默认按钮,但它无法正常工作。这是我的用户控件的代码
<asp:Panel ID="pnlTopicPicker" runat="server" DefaultButton="btnSubmit">
<div class="PadBottom">
<div id="divTopic" class="FloatLeft PadDiv">
<div class="SectionHeader FloatLeft PadRightMediumSmall">Topic:</div>
<asp:DropDownList ID="ddlSelectedTopic" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlSelectedTopic_OnSelectedIndexChanged" >
</asp:DropDownList>
</div>
<div class="FloatLeft PadLeftMediumSmall">
<asp:Button ID="btnClear" runat="server" Text="Clear" OnClick="btnClear_Click" CssClass="DefaultButton" />
</div>
<div class="FloatRight PadRightMediumSmall">
<asp:Button ID="btnSubmit" runat="server" Text="View Report" OnClick="btnSubmit_Click" OnClientClick="return ViewReportSubmit(event);" CssClass="DefaultButton" />
</div>
</div>
</asp:Panel>
我正在使用上述控件:页面中的TopicPicker:
<asp:UpdatePanel ID="pnlFind" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div class="PadLeft">
<Incapnet:TopicPicker ID="incTopicPicker" runat="server" OnClearClick="btnClear_Click" OnSubmitClick="btnSubmit_Click" OnSelectedTopicChanged="ddlSelectedTopic_Changed" />
</div>
<div class="ClearBoth" />
<div class="PadTop PadLeft" >
<asp:GridView ID="gvFindGrid" runat="server" AutoGenerateColumns="False" OnRowDataBound="gvFindGrid_RowDataBound"
CssClass="ContrastTable UFWideTable" GridLines="None">
<AlternatingRowStyle CssClass="AlternateRow" />
<RowStyle CssClass="Row" />
<HeaderStyle CssClass="HeaderRow" />
<EmptyDataTemplate>
No Records Found
</EmptyDataTemplate>
<Columns>
...
...
</ContentTemplate>
</asp:UpdatePanel>
现在,当我按下回车键时,在页面上,我想要执行“btnSubmit”,这是不会发生的。
我如何才能实现这一目标。
谢谢,
答案 0 :(得分:4)
您希望在什么情况下触发btnSubmit Click事件?
我问,因为当实现IButtonControl接口的控件具有焦点时,如果按下Enter键,则只会触发该事件。
这将包括(其中包括)TextBox和DropDownList。
如果您选择DropDownList然后按Enter键,则应触发该事件。但是只需点击任何元素(例如DIV)并点击输入就不会。
修改(根据评论)
它有点像黑客,但你可以使用以下javascript(使用JQuery)实现你的要求:
<script type="text/javascript">
$(document).keypress(function (e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13) {
$('#<%= btnSubmit.ClientID %>').click();
}
});
</script>
答案 1 :(得分:0)
尝试将以下内容添加到按钮中:
<asp:Button ID="Button1" runat="sever" UseSubmitBehavior="true" ... >
如果这没有帮助,请尝试将此添加到您的标记(对于IE):
<!-- Fix for IE bug submit on pressing "Enter" -->
<div style="display:none">
<input type="text" name="hiddenText"/>
</div>
答案 2 :(得分:0)
this.Page.Form.DefaultButton = this.btnLogin.UniqueID;