OnClientClick javascript不渲染为asp禁用按钮

OnClientClick javascript does not rendered for asp disabled button

本文关键字:asp 按钮 javascript OnClientClick      更新时间:2023-09-26
<asp:TemplateField HeaderText="Desc" ItemStyle-CssClass="btnDesc">
  <ItemTemplate>
    <asp:Button ID="btn_desc" runat="server" 
         Enabled="<%# ProcessDescButton() %>" 
         Text="<%# ProcessDescText() %>" 
         OnClientClick="ButtonDescAndNotesClick(this);return false;"  />
  </ItemTemplate>
  <HeaderStyle Width="6%" HorizontalAlign="Center" />
  <ItemStyle Width="6%" HorizontalAlign="Center" />
</asp:TemplateField>

当ProcessDescButton()方法返回FALSE时,此代码在客户端中渲染时不显示OnClientClick。它只显示OnClientClick如果ProcessDescButton()它返回TRUE!

我已经通过关于同一问题的不同帖子,并将asp:Button的启用属性替换为通用HTML属性"DISABLED"。这是有效的,但我需要根据ProcessDescButton()中实现的一些逻辑来启用和禁用按钮。

我不知道该写什么使按钮启用。如果从ProcessDescButton().返回"disabled",则禁用工作

这个问题是由按钮类中的addattribu睾丸渲染行为引起的,与LinkButton不同。

当Enabled = False时,OnClientClick的值被有效地忽略,而不呈现给客户端。

一个选项是在文档中使用javascript禁用按钮。加载到客户端。

Page_PreRender(object sender, EventArgs e)
{
  string script = @"document.getElementById('{0}').disabled = false;";
  script = string.Format(script, btnTest.ClientID);
  Page.ClientScript.RegisterStartupScript(GetType(), "btnTest_Disable", script, true);
}

如果你要做很多这样的事。我建议子类化Button并重写addatattributes来渲染以获得你想要的行为。

为什么不使用html输入按钮(如果你不需要POSTBACK)?