1

ImageButton 和 LinkBut​​ton 组合在一个跨度中,并与相同的 ClickEvent 绑定以从当前位置退出。 在此处输入图像描述 在同一页面上有 searchTextBox 和按钮来开始搜索操作。

现在的问题是:

  • 当我在文本框中输入一些文本并按 ENTER 执行搜索操作(它搜索数据)然后单击 LinkBut​​ton 退出时,LinkBut​​ton 事件没有被触发但 imageButton 事件被触发。
  • 做了与上面相同的操作,但不是按 ENTER 进行搜索,而是单击搜索按钮,然后单击 LinkbUtton 退出。现在事件在点击 ImageButton 和 LinkBut​​ton 时被触发。

为什么当我通过按 ENTER 键搜索文本时只有 ImageButton 事件有效,而不是 LinkBut​​ton 事件。

        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" />
             &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       <asp:TextBox runat="server" Width="200px" ID="TextBoxSearch" MaxLength="70" />
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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>   `
4

1 回答 1

1

查看 HTML 代码,我可以看到未触发 LinkBut​​ton 事件的原因。

元素的 ID 是“IDLinkExit”,而传递给 __doPostback 的值是“ctl00$IDLinkExit”

比较敲回车前后的 HTML 代码,看看 id 是否发生变化。您还可以调试代码并查看 LinkBut​​ton 的 ClientID 的值是多少。

于 2014-05-22T08:52:36.970 回答