ImageButton 和 LinkButton 组合在一个跨度中,并与相同的 ClickEvent 绑定以从当前位置退出。 在同一页面上有 searchTextBox 和按钮来开始搜索操作。
现在的问题是:
- 当我在文本框中输入一些文本并按 ENTER 执行搜索操作(它搜索数据)然后单击 LinkButton 退出时,LinkButton 事件没有被触发但 imageButton 事件被触发。
- 做了与上面相同的操作,但不是按 ENTER 进行搜索,而是单击搜索按钮,然后单击 LinkbUtton 退出。现在事件在点击 ImageButton 和 LinkButton 时被触发。
为什么当我通过按 ENTER 键搜索文本时只有 ImageButton 事件有效,而不是 LinkButton 事件。
LinkButton newUtilityLink;
//Separator
Panel_UtilityLink.Controls.Add(CreateUtilityLinkSeparator());
HtmlGenericControl span = new HtmlGenericControl("span");
span.ID = "ExitSpanId";
span.AddCssClass("exitspan");
ImageButton buttonExit = new ImageButton();
buttonExit.ID = "IDButtonExit";
buttonExit.ImageUrl = "~/WebResources/Exit.gif";
buttonExit.Click += new ImageClickEventHandler(UtilityLink_Click);
buttonExit.ImageAlign = ImageAlign.Bottom;
span.Controls.Add(buttonExit);
newUtilityLink = new LinkButton();
newUtilityLink.ID = "IDULinkExit";
newUtilityLink.Text = "Exit";
newUtilityLink.Attributes.Add("EVENT", "eventExit");
newUtilityLink.Click += new EventHandler(UtilityLink_Click);
span.Controls.Add(newUtilityLink);
Panel_UtilityLink.Controls.Add(span);
编辑 1:HTML 代码
<span class="exitspan" id="ExitSpanId">
<input name="ctl00$IDButtonExit" align="bottom" id="IDButtonExit" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px;" type="image" src="WebResources/Exit.gif"/>
<a id="IDLinkExit" href="javascript:__doPostBack('ctl00$IDLinkExit','')" EVENT="eventExit">
编辑2:原因
我觉得实际原因来自更新面板。On Hit Enter on search box 不执行回发,因此链接没有被绑定。当我在更新面板中添加 AutopostBack 触发器时,它开始工作,但 PAGE STARTED FLICKERING。
`<div id="SearchZone" runat="server">
<span id="SearchTextSpan">
<asp:Label ID="Label2" runat="server" meta:resourceKey="LabelSearch" />
<asp:TextBox runat="server" Width="200px" ID="TextBoxSearch" MaxLength="70" />
</span>
<asp:Button runat="server" ID="ButtonSearch" meta:resourceKey="ButtonSearch" cssClass="button" Width="150px" OnClick="ButtonSearch_Click" />
<asp:HiddenField ID="PreviousSearchIndex" runat="server" />
</div>
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="ButtonSearch" />
</Triggers>
</asp:UpdatePanel> `