2009-09-28 5 views
6

Я пытаюсь получить доступ к значению выбранного радиобата. У меня есть список переключателей, разделенных суб заголовками (следовательно, почему я не пользовался радиолистом)Доступ к динамически созданным элементам управления C# asp.net

Я не знаю, как получить доступ к выбранному значению, так как я не уверен, какое имя оно присвоено с динамическим.

Следующий код находится в цикле обработки и выводит параметры радиосвязи. Все параметры предназначены для одного требуемого выбора пользователя.

//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 уникальную строку, которую затем используете для доступа к элементу управления при обратной передаче.

Групповое имя - это просто псевдоним стандартного свойства имени переключателя и используется, когда пользователь нажимает на переключатель в группе, можно выбрать только одну радиокнопку.

Например:

//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 в качестве идентификатора, при условии, что это уникально.

Затем retrive значение на постбэка это сделать, assumnig что singleType.appTypeName = «mySuperApp»:

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

Теперь вы можете получить доступ к переменной RadioButton, чтобы проверить, какие Groupname он имеет, получить это значение и проверка что он проверен.

Вам нужно будет перевернуть радиокнопки, чтобы узнать, какой из них установлен. Легкий способ сделать это - перебирать дочерние элементы управления radioArea и проверять элемент управления eack, чтобы увидеть, является ли это переключателем, и если он установлен. Другими параметрами являются предоставление каждому идентификатору префикса i.e ID = "RAD _" + singleType.appTypeName и цикл над объектом Request и сопоставление каждого с правильным суффиксом.

+0

«System.Web.UI.WebControls.RadioButton» не содержит определения для «Значение» – Andrew

+0

Whooops! О, позор! –

+0

Исправил мой мозг и пальцы не в ошибке синхронизации –

3

FindControl метод вы используете, ожидает вас передать ему ID, который был назначен для управления при ее создании.

Так для примера RadioButton.ID должен быть равен singleType.appTypeID.ToString()

Надеется, что это помогает.

+0

Когда я просматриваю исходный код генерируемого кода, singleType.appTypeID.ToString() - это значение каждой опции, а не идентификатор. Есть идеи? – Andrew

+0

Ваш код назначает идентификатор радиообъекта singleType.appTypeID.ToString(). Вам нужно будет найти этот точный идентификатор в вашем вызове FindControl(). – womp

+0

@SocialAddict Когда вы просматриваете RadioButtons, как они отображаются в HTML, на что установлены идентификаторы? – rocka

Смежные вопросы