Как получить элемент управления, вызвавший обратную передачу, если он присутствует в ListView ItemTemplate?

В настоящее время я работаю над проектом, который включает создание анкеты из списка вопросов в базе данных. Я использую элемент управления ListView с пейджингом для отображения каждого вопроса и выбора ответов. Возможные варианты: RadioButtons с включенным автопостбэком.

Когда радиокнопка нажата и вызывает обратную передачу, я хочу захватить текст, связанный с радиокнопкой, и вставить его в другую таблицу базы данных, в которой записаны ответы на каждый вопрос. Поскольку радиокнопка находится внутри элемента управления списком, я не уверен, как обрабатывать обратные передачи для этого. Мне нужна помощь в поиске переключателя, вызвавшего обратную передачу. Я новичок в ASP.Net, пожалуйста, помогите мне с этим. Спасибо.


person Ashwin    schedule 11.09.2012    source источник


Ответы (2)


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

Пример:

<asp:RadioButton ID="radio1" runat="server"
  OnCheckedChanged="radio1_CheckedChanged" />

void radio1_CheckedChanged(object sender, EventArgs e)
{
   string text = ((RadioButton)sender).Text;
}

Или вы просто можете использовать идентификатор элемента управления:

void radio1_CheckedChanged(object sender, EventArgs e)
{
   string text = radio1.Text;
}
person Alessandro    schedule 11.09.2012
comment
Спасибо. Но есть ли разница в том, как мы обрабатываем событие CheckedChanged для элементов управления внутри списка, от элементов управления, которые находятся за его пределами? Я спрашиваю об этом, так как где-то читал, что метод FindControl не находит элементы управления внутри шаблона элемента списка. Мне было интересно, то же самое с CheckedChanged. - person Ashwin; 11.09.2012
comment
Нет... CheckedChanged - это событие, которое вызовет элемент управления checkbox, не имеет значения, находится ли он в списке или нет, и вы все равно сможете использовать sender в качестве флажка. Если бы вы обрабатывали событие списка, такое как ItemDataBound, тогда вам пришлось бы использовать FindControl, чтобы найти нужный флажок. - person Dave Zych; 11.09.2012
comment
Нет, то, как вы обрабатываете события, такое же. Разница в том, что когда элемент управления находится внутри шаблона другого элемента управления (например, ItemTemplate), вам необходимо использовать FindControl (в данном случае в ListViewItem) для доступа к нему. - person Alessandro; 11.09.2012
comment
Большое спасибо, Алессадро и @DaveZych. Это сработало. Вы, ребята, спасли мой день! - person Ashwin; 11.09.2012