我有一个项目,我希望注册某个组的成员在某个特定日期参加了会议。
我想要的功能是:
我的问题是,我一直试图为每个对象动态创建复选框"成员"在我的清单中。有一种聪明的方法吗?
我想我会遍历复选框组中的每个选中的复选框,并从每个成员中选择member-id checkbox.checked并将其传递给SQL查询。
欢迎所有输入,因为我有点卡在这里。 : - )
答案 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;
}
}
代码未经过测试,因此可能存在一些错误,但我希望我能提供帮助。