2016-06-16 8 views
0

グループのメンバーを特定の日付に会議に出席させたいプロジェクトがあります。リスト内の各オブジェクトのチェックボックスを動的に作成

私が欲しい機能は次のとおりです。

  • あなたがリストボックスに会うを持っていたグループを選択します。
  • グループのすべてのメンバーが別のリストボックスに表示され、それぞれにチェックボックスがあります。
  • チェックボックスをクリックすると、出席した各メンバーに印を付けることができます。
  • calendar-viewから日付を選択します。
  • 私は、これをDBに挿入するSQLクエリーループに参加した人のIDを送信します。

私の問題は、リスト内の各オブジェクト "メンバー"に対してチェックボックスを動的に作成しようとしていることです。これを行うにはスマートな方法がありますか?

私はチェックボックスのグループ内の各選択されたチェックボックスをループし、各メンバcheckbox.checkedからメンバIDを選択し、これをSQLクエリに渡します。

私はちょっとここに詰まっているので、すべての入力は歓迎です。 :-)

+4

私たちはあなたのお手伝いをするために、いくつかの情報を必要としています:どのコードを試してみましたか? [最小、完全、および検証可能な例を提供する](http://stackoverflow.com/help/mcve)どの技術を使用していますか(WinForms、WPF、ASP.NET、別のもの?) – Sidewinder94

+0

申し訳ありませんが、私はこれにWinフォームを使用しています。 :-)私はリストボックスにグループのすべての "メンバー"オブジェクトを取得した後に立ち往生しています。だから私は、そのリストボックスに追加された各項目のチェックボックスを追加するいくつかの種類のメソッドを理解する必要があります。 –

+0

CheckedListBoxまたはCheckBoxでListViewを使用しないのはなぜですか? – 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

あなたは事を複雑にしています。 'ListBox'で' ItemTemplate'を読むと、これらの種類や目的のために存在します(WPFで可能な限りコードビハインドをできるだけ少なくしてください)。 – Sidewinder94

1

私はSidewinder94のようなCheckedListBoxを使ってこれを解決しました。ありがとう!

私の人々のリストからオブジェクトをチェックボックスを埋めるために最初の方法:

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

私はその後、「checkedListBox1.CheckedItems」を使用して、すべてのチェック項目を反復処理し、すべてのチェックされた項目のためのインサートと私の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); 
      } 
    } 

ありがとうございました! :-)

+0

あなたの問題に解決策を投稿するのはいいことです:)それは将来他の人に役立つかもしれません。 – Sidewinder94

+0

うまくいけばそれは!助けてくれてありがとう、私は前進する必要があった!=) –

関連する問題