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 検索ボックスでポストバックを実行しないため、リンクがバインドされません。更新パネルに AutopostBack トリガーを追加すると、機能し始めましたが、ページがちらつき始めました。
`<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> `