Существует ImageButton и LinkButton, объединенные в промежутке и ограниченные одним и тем же ClickEvent для выхода из текущего местоположения. На той же странице есть searchTextBox и кнопка, чтобы начать действие поиска.
Теперь проблема заключается в следующем:
Почему работает только событие ImageButton, а не событие LinkButton, когда я ищу текст, нажав клавишу ENTER.
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">
<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: Причина
Я чувствую, что фактическая причина - из панели обновления. В поле "Вкл. Enter" в поле поиска не выполняется обратная передача, поэтому ссылка не получает привязку. Когда я добавил триггер AutopostBack в панель обновления, он начал работать, но СТРАНИЦА НАЧАЛА 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> '
Посмотрев код HTML, я вижу причину, по которой событие LinkButton не запускается.
Идентификатором элемента является IDLinkExit, а значение, переданное в __doPostback, - 'ctl00 $ IDLinkExit'
Сравните код HTML до и после нажатия клавиши ввода и посмотрите, изменится ли идентификатор. Вы также можете отладить свой код и посмотреть, какое значение ClientID для LinkButton.