2008-09-24 33 views
2

我有一個窗體,其中默認禁用了一些單選按鈕。ASP.NET沒有看到單選按鈕值的變化

當一個值被輸入到文本框中時,單選按鈕通過JavaScript啓用。用戶然後選擇其中一個單選按鈕,然後單擊提交按鈕並將其發送回服務器。

當我回到服務器時,用戶單擊的單選按鈕未顯示爲選中狀態。我將使用'rbSolid'作爲我關注的單選按鈕。

我處理的單選按鈕「的onclick」事件,但我不具備的功能做任何事情比其他射擊:

Me.rbSolid.Attributes.Add(「點擊」,「 styleLookupChanged(本); 「)

在客戶端,這使得當文本框的值被改變的單選按鈕:

的document.getElementById(」 ctl00_MainLayoutContent_WebPanel4_rbSolid「)DISA。布萊德=假;

我然後單擊單選按鈕,然後通過一個按鈕後回來,但後面的服務器上,這是始終爲false:

如果Me.rbSolid.Checked則...

如果我默認啓用單選按鈕,它會顯示爲正確檢查。

感謝您的幫助!

+0

你如何禁用上述單選按鈕?你在JavaScript中禁用它們還是通過服務器端代碼來做到這一點? – 2008-09-25 13:13:05

回答

6

這與ASP.NET如何回發數據有關。如果控件在呈現頁面時被禁用(control.enabled = false),則不會將值返回給服務器。我過去如何解決這個問題,是使用attributes標籤設置disabled標誌,而不是使用Enabled屬性。因此,不是control.enabled = false,而是使用control.attributes.add(「disabled」,「disabled」)。

0

這不適合我。

我加入

Me.rbSolid.Style.Add( 「背景色」, 「紅色」)

Me.rbSolid.Style.Add( 「無效」, 「真」)

和背景風格的作品,但'殘疾人'沒有。表單呈現時仍然可以編輯。

這裏的後負荷來源:

<span style="font-family:Verdana;font-size:8pt;background-color:red;Disabled:true;"> 
<input id="ctl00_MainLayoutContent_WebPanel4_rbSolid" type="radio" name="ctl00$MainLayoutContent$WebPanel4$DetailType" value="rbSolid" onclick="styleLookupChanged(this);" /> 
<label for="ctl00_MainLayoutContent_WebPanel4_rbSolid">Solid</label> 
</span> 
+0

對不起,應該是me.rbSolid.Attributes.Add(「disabled」,「disabled」)。這應該可以解決你的問題。我編輯了我的原始答案以反映這一更正。 – Craig 2008-09-25 14:32:57

0

顯然殘疾人是一個HTML屬性不是CSS屬性。如果您在asp.net中禁用服務器端的單選按鈕,然後檢查呈現的html,則單選按鈕將嵌入到span標記中,並將其disabled屬性設置爲true。你可以嘗試定位按鈕的跨度,而不是(父元素,它沒有ID),並在JavaScript中設置disabled = false,看看是否可行