2015-09-27 9 views
-1

У меня есть радиокнопки, около 200, идентификаторы которых - KP1, KP2, KP3 ... KP200. Я хотел бы запустить цикл for, чтобы проверить, отмечены ли они или нет.Получить контроль над кнопкой радио

я получаю аварию на линии № 9:

RbId = CtrlId; 

Я хотел бы, чтобы извлечь Radio Button Ctrl из строки аналогично тому, как это делается с помощью Javascript т.е.

document.getElementById("<%=ID%>"). 

. Пожалуйста, порекомендуйте.

Код:

int i; 
RadioButton RbId = null; 
string CtrlId = null; 
char[] KPList = new char[200]; 

for (i = 1; i <= 200; i++) 
{ 
    CtrlId = "KP"+i.ToString(); 
    RbId = CtrlId; 
    if(RbId.Checked) 
    { 
     KPList[i] = (char)j; 
     break; 
    } 
} 
+0

Это wpf? winforms или что-то в этом роде? –

+0

Его веб-приложение. – Vasanth

+1

Затем укажите, что в теге. ASP.NET, я думаю? –

ответ

2

Вы можете использовать FindControl() метод в это дело:

Control ctrl = this.FindControl(CtrlId); 

if (ctl is RadioButton) 
{ 
    RadioButton rdBtn = ctrl as RadioButton; 
    // now do whatever here 
    if(rdBtn.Checked) 
    { 
    } 
} 
+0

FindControl (CtrlId) возвращает NULL. Может быть, так как я вызываю это из нажатия кнопки, «this» возвращает NULL. Мне нужно проверить все приложение веб-страницы для элементов управления. Любые предложения по проверке всего документа для элементов управления.! Благодарю. – Vasanth

+0

Ваше решение использовать FindControl очень помогло. Переключатели находятся в разных панелях. В настоящее время PanelId.FindControl возвращает TRUE. Но хотел бы написать его для всех переключателей в веб-приложении. Спасибо за ваше решение. – Vasanth

+0

@Jones '' this'' ссылается на текущую страницу, я думаю, может быть, ваши элементы управления находятся внутри пользовательского элемента управления, поэтому он может не найти их, кстати, вы можете делать '' PageFindControl() '' –

1

Попробуйте это:

foreach (RadioButton rdbtn in myDiv.Controls.OfType<RadioButton>())//Assume the RadioButtons are inside a div tag called myDiv 
{ 
    if(rdbtn.Checked) 
    { 
     .... 
    } 
} 

Было бы еще лучше, как это:

foreach (RadioButton rdbtn in myDiv.Controls.OfType<RadioButton>().Where(rdbtn => rdbtn.Checked)) 
{ 
}