2009-08-27 3 views
0

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

То, что я пробовал сначала, это добавить событие onclick к кнопке и зациклиться на элементе listview.items и проверить «проверенное» состояние элемента управления флажком, однако это всегда возвращалось «false», даже если они отметили пункт.

Единственный способ, которым я мог бы заставить его работать, - это если я обошел все элементы списка внутри события onItemDataBound, однако это не кажется наиболее эффективным способом его выполнения, поскольку он будет вызывать onItemDataaBound для каждого элемента в списке, (так называемый foreach в listview.items каждый раз)

Затем я попытался сделать то же самое в событии OnDateBound, поскольку это только один раз вызывается, но я столкнулся с той же проблемой, он видит флажок «checked» как ложь все время, мне было интересно, может ли кто-нибудь указать мне правильное направление надлежащего способа сделать это.

спасибо Raj.

ответ

0

Я использую сетку, которая имеет ту же функциональность. Я положил кнопку вне gridview с событием onclick.

В коде позади меня есть что-то вроде этого:

foreach (GridViewRow gridViewRow in GridAvailableUsers.Rows) 
      { 
       // only add selected topics. 
       CheckBox selCheckBox = (CheckBox)gridViewRow.Cells[3].Controls[1]; 
       if (selCheckBox.Checked) 
       { 
// do something 
       } 
      } 

Это будет цикл по всем строкам. Если вам не нужно что-то подобное, то вам, возможно, придется пойти с помощью javascript-решения. Захватите все строки с помощью флажка и обновите скрытое поле с идентификатором строки

0

Должна быть функция DataBind(), вызываемая на вашем listview до вашего события Button_Clic k; скорее всего, будет в событии page_load. Если вы связали свои данные в событии page_load; сделать его внутри, если (!Page.IsPostBack) блок;

Надеюсь, это поможет.

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