c# - ASP :Button not displaying correctly

标签 c# javascript asp.net button gridview

这是我的场景:

我想根据 GridView 中显示的行数显示一个按钮(btnGenerate)。我让它显示了一秒钟然后又消失了。我正在使用其他按钮之一(btnImport)的 onclientclick。我认为导致问题的是,在同一个按钮(btnImport)的 OnClick 事件上,两个 gridview 为每个数据绑定(bind)执行。这可能是问题所在吗?我已经使用 javascript 编写了一个脚本来从客户端执行此任务。有更好的方法吗?我可以做什么来解决我的问题?

这是我到目前为止的代码:

<asp:Button runat="server" ID="btnImport" Text="Load Data from File" 
     BackColor="#990000" ForeColor="White" nowrap OnClick="btnImport_Click" 
     style="display:none" OnClientClick="DisplayButtonGenerate()"/>

<asp:Button ID="btnGenerate" runat="server" Text="Generate New Stock Codes" 
    BackColor="#990000" ForeColor="White" OnClick="btnGenerate_Click" 
    style="display:none" />

我有两个 GridView :显示所有错误记录的 ErrorsGrid 和显示正确记录的 InventoryGrid。正如我上面所说,如果 ErrorsGrid 的 rowCount=0,则显示 btnGenerate。

protected void btnImport_Click(object sender, EventArgs e)
{
    InventoryGrid.DataBind();
    ErrorsGrid.DataBind();        
}

protected void btnGenerate_Click(object sender, EventArgs e)
{
    FinalMessage.AppendLine(_InsertWrapper.PostData());
}

这是脚本:

<script language="javascript" type="text/javascript">
    function DisplayButtonGenerate() {
        var rowCount = <%=ErrorsGrid.Rows.Count %>;
        var buttonGen = document.getElementById("<%=btnGenerate.ClientID%>");
        if(rowCount == 0)
        {
            buttonGen.style.display = "block";
        }
    } 
</script>

最佳答案

您的 btnImport 已设置服务器端 OnClient 和客户端 OnClientClick。我想发生的事情是首先调用客户端,显示按钮,然后服务器端启动,页面从服务器刷新,然后按钮再次隐藏。您可以采用一种或另一种方式来完成此操作,但不能同时使用两种方式:

服务器端:删除OnClientClick & style="display:none" & JavaScript,将按钮的Visible属性设置为false,并在服务器上的代码隐藏单击事件中添加:

if(ErrorsGrid.Rows.Count == 0)
    btnImport.Visible = True;

客户端:从 JavaScript 函数返回 false 到 OnClientClick:

OnClientClick="return DisplayButtonGenerate()"

function DisplayButtonGenerate() {
  ....
  return false;
} 

关于c# - ASP :Button not displaying correctly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22220874/

相关文章:

javascript - JS 滚动条不起作用

javascript - Vanilla JS 插件模板

c# - 在 C# 中将 Excel XML 2003 工作表文件转换为 .XLSX 文件

c# - 在 C# 中将 MS Access 颜色代码转换为十六进制

javascript - 编码 UI - C# - 时间 itemprop 标签 - 如何验证年份是否存在

C# XmlWriter.Create() - 访问路径被拒绝

javascript - 组织团体/特权的框架/理论

asp.net - 如何在不使用 <table> 标签的情况下在 asp.net 中制作 colspan 和 rowspan 单元格,仅使用 <div> 标签

c# - 了解 XAML 语法

c# - 我可以在我托管的 PowerShell 中创建变量并启动我的类的方法吗?