2012-09-11 3 views
0

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

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

ответ

1

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; 
} 
+0

Спасибо. Но есть ли разница в способе обработки события CheckedChanged для элементов управления внутри списка из элементов управления, которые находятся за его пределами? Я спрашиваю об этом, так как я где-то читал, что метод FindControl не находит элементы управления внутри шаблона элемента списка. Мне было интересно, если это тот же случай с CheckedChanged. – Ashwin

+0

Нет ... 'CheckedChanged' - это событие, которое вызовет элемент управления' checkbox', не имеет значения, находится ли он в списке или нет, и вы по-прежнему сможете использовать 'sender' в качестве флажка. Если вы обрабатывали событие listview, например «ItemDataBound», вам нужно будет использовать FindControl, чтобы найти нужный флажок. –

+0

Нет, то, как вы обрабатываете события, одинаково. Разница в том, что когда элемент управления находится внутри другого шаблона элемента управления (т. Е. ItemTemplate), вам необходимо использовать FindControl (в данном случае в ListViewItem) для доступа к нему. – Alessandro

2

Вы можете использовать sender аргумент обработки события. Например в CheckBox 'CheckedChanged-event:

void Check_Clicked(Object sender, EventArgs e) 
{ 
    var checkBox = (CheckBox) sender; 
    String text = checkBox.Text; 
} 

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

+2

Каждый раз, когда я нажимаю на вопрос об asp.net и как datagrids, gridviews, списки и т. Д., Вы можете рассчитывать на @Tim Schmelter уже ответил на это ... + 1 – JonH

+0

Большое спасибо Тиму. Это сработало. – Ashwin

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

  • Нет связанных вопросов^_^