簡體   English   中英

為列表中的每個對象動態創建復選框

[英]Dynamically create checkboxes for each object in list

我有一個項目,要注冊某個小組的某個成員參加了某個日期的會議。

我想要的功能是:

  • 您可以在列表框中選擇哪個小組開會。
  • 該組的所有成員都顯示在另一個列表框中,並且每個成員都有一個復選框。
  • 您可以通過單擊復選框標記參加的每個成員。
  • 您從日歷視圖中選擇一個日期。
  • 然后,我想將參加人員的每個ID發送到將其插入數據庫的SQL查詢循環中。

我的問題是我一直在嘗試為清單中的每個對象“成員”動態創建復選框。 有什么聰明的方法嗎?

我認為接下來我將遍歷復選框組中的每個選定復選框,並從每個成員checkbox.checked中選擇成員ID,並將其傳遞給SQL查詢。

歡迎所有輸入,因為我有點卡在這里。 :-)

我通過使用像Sidewinder94建議的CheckedListBox解決了這個問題,謝謝!

用我的人員列表中的對象填充復選框的第一種方法:

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

然后,我遍歷所有Checked項目,並使用“ 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);
            }
    }

謝謝您的幫助! :-)

假設您正在使用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;
    }
}

該代碼未經測試,因此可能會有一些錯誤,但是我希望我能幫上忙。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM