2011-06-03 88 views
1

我一直在尋找一個爲什麼這不起作用的原因,但我找不到一個。在我的asp.net應用程序中,我在c#中創建了一堆隱藏的輸入,然後在將它們調用回服務器之前嘗試在javascript中對它們進行修改。使用javascript更改輸入值

我的C#代碼:

hidden3 = new HtmlInputHidden(); 
    hidden3.ID = "total"; 
    hidden3.Value = index.ToString(); 
    this.Controls.Add(hidden3); 

我的javascript代碼:

 mod = document.getElementById("total"); 
    mod.value = newVal; 

我可以打電話值恢復正常,但它不會改變。我還爲原始值添加了警報,然後在更改值之後添加了警報,並且它們都顯示正常。然而,代碼是從來沒有改變,所以當我拉值

要得到的價值回來,我用這個;

HtmlInputHidden hiddenControl = (HtmlInputHidden)FindControl("total"); 
+0

你打算如何「回電話」?你使用'Request [「total」],還是你動態地添加隱藏的輸入,然後嘗試從中提取值? – 2011-06-03 21:29:27

+0

也許你錯過了它的回傳。你能發佈你的頁面代碼嗎?問候 – 2011-06-03 21:18:12

回答

1

這些控件是動態創建的,它們必須在每次回發中創建。但是,這些應該在Page_Load之前,最好在Page_Init事件處理程序中構建。如果這些是在Page_Load中創建的,則視圖狀態已經被處理,控件不能從發佈的值中設置。

+0

你能解釋更多嗎? – user776530 2011-06-03 21:32:23

+0

你在哪裏創建這些控件? – 2011-06-03 21:35:53

+0

Page_Load,我使用我使用的表創建它們,因此我只需要查詢數據庫一次。 – user776530 2011-06-03 21:49:28

2

您是否已驗證生成的輸入標記爲「總計」的ID?默認情況下,在Webforms中,實際的客戶端標識以父級的Id(和一個分隔符)作爲前綴;這有助於確保ID是唯一的。獲取真實客戶端Id的一種方法是從控件的ClientID屬性中提取值,但只有在將其放入Controls集合後,才應該查看該值。

+1

布萊恩是對的。如果您使用的是ASP.NET 4.0,則可以設置ClientIDMode =「Static」,以便該ID保持爲「總計」 – Akhil 2011-06-03 21:18:39

+0

我可以使用alert獲取值(document.getElementById(「total」)。value);但我會盡力解決 – user776530 2011-06-03 21:27:02