当对ENTER键执行任何操作而不是单击按钮时,LinkBut​​ton单击事件不会触发

时间:2014-05-21 13:25:52

标签: c# asp.net asplinkbutton

ImageButton和LinkBut​​ton组合在一个范围内,并与相同的ClickEvent绑定以从当前位置退出。 enter image description here 在同一页面上有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:原因

我觉得实际原因来自更新面板。在搜索框上按Enter键不执行回发,因此链接未获得绑定。当我在更新面板中添加了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>   `

1 个答案:

答案 0 :(得分:1)

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

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

比较输入前后的HTML代码,看看ID是否发生了变化。您还可以调试代码并查看LinkBut​​ton的ClientID的值。