【问题标题】:asp:Linkbutton enables but is not clickableasp:Linkbutton 启用但不可点击
【发布时间】:2010-11-02 08:15:17
【问题描述】:

我不知道这是一个错误还是什么,但是启用链接按钮后如何在代码隐藏中调用事件?

这是我的链接按钮:

<asp:LinkButton ID="btnStartImportNow" runat="server" OnClick="btnStartImportNow_Click" Enabled="false">
    <div class="css_action_item_enabled" style="float: right;">
    <div class="css_action_item_icon_add">
    </div>
    <span class="css_action_link">
    <asp:Label runat="server" ID="lblStartImport">
    </asp:Label>
    </span>
    </div>
</asp:LinkButton>

现在我有一个带有这条规则的 javascript:

document.getElementById(clientId + "_btnStartImportNow").disabled = false;

按钮启用,但我无法点击按钮...怎么了?!?

提前致谢!

【问题讨论】:

  • 看起来回发事件未附加到链接,因为链接被呈现为禁用...如果您查看html代码,是否有onclick事件?
  • 是的,我也相信这一点。如果服务器端控件不可见,ASP.NET 将不会为它们创建 _doPostback 事件。尝试将它们设置为隐藏 页面加载后(即在 window.load / docready 上)
  • 正确,onclick 事件未注册...如果我使用 document.getElementById(clientId + "_btnStartImportNow").setAttribute("OnClick", "btnStartImportNow_Click");然后当我单击 btnStartImportNow_Click 未定义时收到消息...
  • 谢谢!!我设法像 RPN1984 告诉我的那样用 window.load 修复它。谢谢!!

标签: c# javascript .net asp.net


【解决方案1】:

在 window.load 中设置 disabled 属性,以便 _doPostback 在按钮被禁用之前注册,这会导致 _doPostback 跳过他的注册:D

【讨论】:

    【解决方案2】:

    您也可以在服务器端进行。 从标记中删除 Enabled="False" 并在 Page_Load 事件中添加这一行:

    btnStartImportNow.Attributes["disabled"] = "disabled";
    

    客户端解决方案很好,但有几个缺点:

    1. 当用户在浏览器中禁用脚本时不起作用
    2. 跨浏览器问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      相关资源
      最近更新 更多