【问题标题】:ASP Make invisible element visibleASP 使不可见元素可见
【发布时间】:2013-08-21 12:35:37
【问题描述】:

在我的网页上有一个大表格和一个复选框。最初,该表未显示。当复选框被选中时,javascript 调用tablename.SetVisible(cb.GetChecked())。这失败了,因为不可见的表格根本不在页面上并且无法使其可见。调试器说:

Microsoft JScript 运行时错误:'tablename' 未定义

如果我将表格设置为可见,然后运行网页,复选框效果很好,并且能够使表格不可见并再次可见。

但是表格真的很大而且通常很烦人,那么我如何让复选框在表格最初不可见的情况下工作?

其实这是用DevExpress的控件,但我觉得这不是DevExpress的问题。

服务器端源码只是:

protected void Page_Load(object sender, EventArgs e)
{
    gridResults.DataSource = ds.Tables["Results"];
    gridResults.KeyFieldName = "Sample_Name";
    gridResults.DataBind();
    gridResults.SettingsPager.PageSize = 100;
 }

【问题讨论】:

  • 您使用复选框事件吗?您的复选框是否具有 runat='server' 属性?
  • 是的,我的所有元素都有。这是好事还是坏事?
  • 您正在使用服务器端控件。您可以发布您的源代码吗?
  • 您已将此标记为asp-classic,但说您的元素具有runat="server" 属性?
  • 请编辑您的问题并将源代码放在那里

标签: html asp.net checkbox webforms visible


【解决方案1】:

如果您在客户端执行此操作(例如在浏览器中),如果您的表格不在页面上,那么您将无法对其执行任何操作。

我建议如果你不想在页面上显示表格,那么你将它的display样式属性设置为none;

C#:

gridResults.CssClass = "hidden";

CSS

.hidden{ display: none; }

然后,当您更改复选框的状态时,您只需切换 hidden 类。

JavaScript

document.getElementById('[gridResults_ID]').className = ""; // show the table

document.getElementById('[gridResults_ID]').className = "hidden"; // hide the table again

【讨论】:

  • 我阅读了 CSS 方法,您帮助我将它与 CSS 的 C# 方法一起使用。但是,我收到关于 object is null or undefined 的运行时错误,这可能意味着 DevExpress 用于控件的名称与 document.getElementById 看到的名称不同。我会在 DevExpress 论坛上进一步询问这个细节。
  • 是的,在 asp.net WebForms 中生成的 ID 通常在运行时更改,因此如果您的控件 ID 是 gridResults,那么它可能会更改为 MyContentPlaceholder_gridResults
  • DevExpress 使许多事情变得更简单,但在这里看起来我将高级编程与机器代码混合在一起。事实上,字符串gridResults 与一些无关的东西被破坏了,因为在异常断点处,显示实际运行的代码,我找不到该字符串的另一个实例。
  • @Roland 抱歉,我无法帮助您解决 DevExpress 的怪癖,从未使用过。
  • 我会在 DevExpress.com 论坛上进一步询问。问一个好问题很重要,你的信息有很大帮助。
猜你喜欢
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多