动态创建列表

时间:2016-06-16 08:26:35

标签: c# .net loops checkbox dynamic

我有一个项目,我希望注册某个组的成员在某个特定日期参加了会议。

我想要的功能是:

  • 您可以选择在列表框中遇到哪个群组。
  • 该组的所有成员都显示在另一个列表框中,每个成员都有一个复选框。
  • 您可以通过单击复选框来标记出席的所有成员。
  • 您可以从日历视图中选择日期。
  • 然后,我希望将参与者的每个ID发送到SQL查询循环,并将其插入到数据库中。

我的问题是,我一直试图为每个对象动态创建复选框"成员"在我的清单中。有一种聪明的方法吗?

我想我会遍历复选框组中的每个选中的复选框,并从每个成员中选择member-id checkbox.checked并将其传递给SQL查询。

欢迎所有输入,因为我有点卡在这里。 : - )

2 个答案:

答案 0 :(得分:1)

我通过使用像Sidewinder94建议的CheckedListBox来解决这个问题,谢谢!

使用人员列表中的对象填充复选框的第一种方法:

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

然后我使用&#34; checkedListBox1.CheckedItems&#34;遍历所有Checked项目并使用insert对所有已检查项目查询我的DB。集合。

    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);
            }
    }

感谢您的帮助! : - )

答案 1 :(得分:0)

假设您正在使用WPF,则可以为该会议的每个成员创建UserControl。如果这样做,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;
    }
}

代码未经过测试,因此可能存在一些错误,但我希望我能提供帮助。