2011-07-19 63 views
2

我具有一個複選框,並在其模板列三個文本框一個GridView控件。 邏輯是,當我檢查CheckBox時,相應的TextBoxes應該被啓用。如果我取消選中CheckBox,則相應的TextBoxes應該被禁用。我已經爲此功能編寫了JavaScript。在回傳的JavaScript失去其功能

一切工作正常,但在頁面我有一個的DropDownList了。當我更改DropDownList值時,頁面會獲得PostBack,並且當時我失去了JavaScript功能,即GridView中啓用的TextBoxes被禁用。如何解決這個問題呢?

+0

顯示標記AMD的JavaScript。 GridView是否放置在UpdatePanel中? –

+0

何時在複選框上添加功能?在哪個事件? –

+0

@OneHalfTrackMindMan:是的。我將GridView放置在Update Panel中,My Page有12個DropDownList。當我更改DropDownList的SelectedValue中的任何一個時,GridView中的TextBox返回到其原始狀態。即。已禁用... – thevan

回答

4

後每在更新面板回來後你需要重新初始化javascript,因爲正如你所理解的那樣,html的結構已經發生變化,並且在更新面板更新之後前一個不存在的javascript上運行。微軟提供瞭如下功能。

這是javascript行。

+0

我想要在那裏複製並粘貼JavaScript函數嗎? – thevan

+0

@Thevan我建議加上您的JavaScript函數名爲initialize或者類似的東西在裏面,並稱之爲2次,一次在頁面加載(因爲你現在做的),並在該函數的EndREquest後,有一次我告訴你,你 – Aristos

+0

是絕對正確的。非常感謝你...... – thevan

-1

使用自動回發時使用複選框,以便從服務器端代碼禁用文本框。這將更新視圖狀態,因此它將在選擇更改時保留。在UpdatePanel中使用這些用於ajax。或者,您也可以將下拉列表添加到updatepanel中,以便選擇更改不會影響其他頁面元素。

0

您必須通過使用ScriptManager.RegisterStartupScript方法在每次回發中註冊您的JavaScript:here's示例(編輯爲英文文章,對不起:p)。

-1

JavaScript正在研究DOM。當頁面獲取來自ViewState的PostBack值時,將被寫入DOM並覆蓋您的JavaScript更改。你應該以持久的方式存儲複選框的狀態,即。 jQuery數據()或隱藏字段以及PostBack寫入後更改回DOM。

+0

jquery data()不會在帖子後面保存 – Raynos

1

使用的ASP電網RowCreated事件中加入客戶端功能上的複選框,這樣,客戶端功能將停留在每次回發