2013-08-21 284 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