2013-08-21 235 views
0

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

Microsoft JScript runtime error: 'tablename' is undefined

如果我设置表可见,然后运行网页,该复选框很好地工作,并能够使表无形和有形一次。

但是这个表格真的很大,而且一般都很烦人,所以我怎样才能让复选框与最初不可见的表一起工作呢?

事实上,这是与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; 
} 
+0

你是否复选框事件的工作?是你的复选框已RUNAT = '服务器' 属性? –

+0

是的,我的元素有。是好还是坏? – Roland

+0

你正在使用服务器端controls.could你张贴你的源代码? –

回答

1

如果您在客户端(例如,在浏览器)这样做,如果你的表是不是在页面上,那么你将无法做任何事用它。

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

C#:

gridResults.CssClass = "hidden"; 

CSS

.hidden{ display: none; } 

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

的JavaScript

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

OR

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

我阅读了关于CSS方法的内容,并且帮助我将其用于CSS的C#方法。但是,我得到了一个有关'object is null or undefined'的运行时错误,可能意味着DevExpress用于控件的名称与document.getElementById不同。我将在DevExpress论坛上进一步询问这个细节。 – Roland

+0

是的,在asp.net WebForms中生成的ID通常会在运行时更改,所以如果您的控件ID是'gridResults',那么它可能会更改为'MyContentPlaceholder_gridResults'类似的东西。 –

+0

DevExpress使许多事情变得更简单,但在这里看起来像我将高级编程与机器代码混合在一起。实际上,字符串'gridResults'被破坏为不相关的东西,因为在异常断点处显示实际运行的代码,我找不到该字符串的另一个实例。 – Roland