2016-06-16 2 views
0

У меня есть проект, для которого я хочу зарегистрировать, какие члены группы посетили собрание на определенную дату.Динамически создавать флажки для каждого объекта в списке

Функциональность Я хочу это:

  • Вы выбираете, какая группа имела встречу в ListBox.
  • Все участники группы показывают в другом списке, и каждый из них имеет флажок.
  • Вы отмечаете каждого участника, посетившего, нажав на флажок.
  • Вы выбираете дату из календарного вида.
  • Затем я хочу отправить каждый идентификатор людей, посещающих цикл запроса SQL, который вставляет это в БД.

Моя проблема в том, что я застрял, пытаясь создать флажки динамически для каждого объекта «член» в моем списке. Есть ли разумный способ сделать это?

Я полагаю, что затем я пройду через каждый выбранный флажок в группе флажков и выберу член-идентификатор из каждого члена checkbox.checked и передам его в SQL-запрос.

Все входные данные приветствуются, поскольку я застрял здесь. :-)

+4

Для нас, чтобы помочь вам, нам понадобится дополнительная информация: Какой код вы уже пробовали? [Укажите минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). Какую технологию вы используете (WinForms, WPF, ASP.NET, еще одна?)? – Sidewinder94

+0

Извините, забыл упомянуть, что для этого я использую формы Win. :-) Я застрял после того, как все «члены» объектов группы попали в список. Поэтому мне нужно выяснить какой-то метод, который добавляет флажок для каждого элемента, добавленного в этот список. –

+0

Почему бы не использовать CheckedListBox или ListView с CheckBoxes? – TaW

ответ

0

Предполагая, что вы используете WPF, вы можете сделать UserControls для каждого члена этой встречи. Если вы это сделаете, достаточно простого флажка внутри UserControl. Если вы храните UC в списке или массиве, вы можете обходить коллекцию, и если флажок установлен, добавьте его во вторичный список/массив, в котором хранятся люди, входящие в группу.

public class PersonUC : UserControl 
{ 
    public Person; 
    public PersonUC(Person p) 
    { 
    Person = p; 
    } 
} 

public class MainWindow 
{ 
    private List<PersonUC> personUCs; 

    private void MethodCalledAfterEventSelected(List<Person> p) 
    { 
     //circle through the collection to add the UCs to your listbox 
     personUCs = new List<PersonUC>(); 
     foreach(var item in p) 
     { 
      personUCs.Add(new PersonUC(item)); 
     } 
     yourListBox.Items = personsUC; 
    } 

    private List<Person> GetAttendet() 
    { 
     List<Person> attendet = new List<Person>(); 
     foreach (PersonUC item in personsUC) 
     { 
      if(item.youCheckboxName.Checked) 
       attendet.Add(item.Person); 
     } 
     return attendet; 
    } 
} 

Код не проверен, так что может быть несколько ошибок, но я надеюсь, что смогу помочь.

+0

Извините, забыл упомянуть, что для этого я использую формы Win. :-) Я застрял после того, как все «члены» объектов группы попали в список. Поэтому мне нужно выяснить какой-то метод, который добавляет флажок для каждого элемента, добавленного в этот список. –

+0

Вы слишком оскорбительны. Попробуйте прочитать о 'ItemTemplate' в' ListBox', он существует для этих видов или целей (вы всегда должны стараться иметь как можно меньше кода в WPF). – Sidewinder94

1

Я решил это с помощью CheckedListBox, такого как Sidewinder94, спасибо, спасибо!

Первый способ заполнить флажок с объектами из моего списка людей:

public void FillCheckBox(List<person> listan) 
    { 
     checkedListBox1.Items.Clear(); 
     foreach (person item in listan) 
     { 
      checkedListBox1.Items.Add(item, true); 
     } 
    } 

Я тогда перебрать все отмеченные элементы и запрашивать мой DB со вставкой для всех отмеченных элементов с помощью «checkedListBox1.CheckedItems» коллекция.

private void button1_Click(object sender, EventArgs e) 
    { 
     postgresConnection _con = new postgresConnection(); 

     group va = (group)comboGrupper.SelectedItem; 

     int index = va.gruppid; 

     foreach (person item in checkedListBox1.CheckedItems) 
      { 
       _con.AddPeopleAttendance(item.personid, index); 
      } 
    } 

Спасибо за помощь! :-)

+0

Это приятно, если вы опубликуете решение своей проблемы :) Это может помочь кому-то еще в будущем. – Sidewinder94

+0

Надеюсь, это будет! Спасибо за помощь, это был просто толчок, мне нужно было идти вперед! =) –

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