2009-09-28 79 views
6

我試圖訪問選定的radioButton的值。我有一個單選按鈕的列表分離的子標題(因此,爲什麼我還沒有使用radioList)訪問動態創建的控件的值c#asp.net

我不知道如何訪問選定的值,因爲我不知道它是什麼名字,它是動態的。

以下代碼位於for循環中並輸出無線電選項。所有選項都適用於一個必需的用戶選擇。

//add list to radio button list 
RadioButton button1 = new RadioButton { 
GroupName = "myGroup", 
Text = singleType.appTypeName, 
ID = singleType.appTypeID.ToString() 
}; 
radioArea.Controls.Add(button1); 
myLabel = new Label(); 
myLabel.Text = "<br />"; 
radioArea.Controls.Add(myLabel); 

這是怎麼我嘗試訪問它:

RadioButton myButton = (RadioButton) radioArea.FindControl("myGroup"); 

我知道這應該是很簡單的,但即時通訊仍然處於非常PHP的心態,感謝所有幫助。

感謝

回答

9

嗨,聽起來對我來說,就像你對單選按鈕控件的各種屬性以及如何正確生成單選按鈕感到困惑。

ID屬性在這裏是關鍵。

您應該將ID屬性設置爲一個唯一的字符串,然後在回發時使用該字符串訪問該控件。

GroupName只是單選按鈕的標準名稱屬性的別名,因此當用戶單擊組中的單選按鈕時只能選擇一個單選按鈕。

例如:

//add list to radio button list 
RadioButton radioButton = new RadioButton(); 
radioButton.GroupName = "radioGroup"; 
radioButton.Text = singleType.appTypeID.ToString(); 
radioButton.ID = singleType.appTypeName; 

radioArea.Controls.Add(radioButton); 

Label label = new Label(); 
label.Text = "<br />"; 
radioArea.Controls.Add(label); 

在上述例子中我已經分配singleType.appTypeName作爲ID,假設這是唯一的。

然後以檢索上回發的值做到這一點,那assumnig = singleType.appTypeName「mySuperApp」:

RadioButton radioButton = (RadioButton) radioArea.FindControl("mySuperApp"); 

現在,您可以訪問單選按鈕變量來檢查該組名有,得到它的價值和檢查它被檢查。

您需要遍歷單選按鈕來確定選中哪一個。這樣做的一個簡單方法就是遍歷radioArea的子控件並檢查eack控件,看看它是否是一個單選按鈕,以及它是否被選中。另一種選擇是爲每個ID分配一個前綴,即ID =「RAD_」+ singleType.appTypeName,並循環遍歷請求對象,並用正確的後綴匹配每個ID。

+0

'System.Web.UI.WebControls.RadioButton'不包含'價值'的定義 – Andrew 2009-09-28 16:19:04

+0

大人!哦,恥辱! – 2009-09-28 16:34:50

+0

糾正我的大腦和手指不同步錯誤 – 2009-09-28 16:38:30

3

FindControl方法,你正在使用,希望你傳遞給它分配在創建它來控制ID

因此,對於您的示例RadioButton.ID應該等於singleType.appTypeID.ToString()

希望這有助於。

+0

當我查看生成的代碼的源代碼singleType.appTypeID.ToString()是每個選項的值而不是ID。有任何想法嗎? – Andrew 2009-09-28 15:31:48

+0

您的代碼將單選按鈕的ID分配爲singleType.appTypeID.ToString()。您需要在FindControl()調用中搜索確切的ID。 – womp 2009-09-28 15:43:33

+0

@SocialAddict當您在HTML中呈現RadioButton時,它們的ID設置爲什麼? – rocka 2009-09-28 15:46:31