C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: チェックリストボックスへのバインドと項目編集


(過去ログ 117 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■68988 / inTopicNo.1)  チェックリストボックスへのバインドと項目編集
  
□投稿者/ Яアルビノフォックス (1回)-(2013/11/27(Wed) 15:32:39)

分類:[VB.NET/VB2005 以降] 

チェックリストへのバインドについて質問です。開発環境はVS2010、言語はc#です
下のようなデータテーブル定義があります。

列名    データ型
管理番号   int
基準年度-2  bit
基準年度-1  bit
基準年度-0 bit
基準年度格納 int

実際のデータはこのような形です

管理番号 基準年度-2 基準年度-1 基準年度-0 基準年度格納
   1  true  true true 2010
2 true true false 2011

これをチェックリストボックスにバインドしたいのですが、このような形で行いたいのです。

管理番号 1
=====ここからチェックリストボックス====
□"基準年度-2"年度 //この場合【2008年度】と出力したい
□"基準年度-1"年度 //【2009年度】と出力したい
□"基準年度-0"年度 //【2010年度】と出力したい

基準年度をいじりたい(毎年使えるようにしたい)ため、このような形を取りたいのですがどのようなコードを書いたらよろしいでしょうか?
一応このようなコードを書きかけたのですが、これ以上どうしたものかが分からなくなってしまいました。

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {
int x=comboBox.Text;//管理番号を入力したボックス
checklistBox1.DataBindings.Add("Bool",taskListBindingSource,"ここに何を入力?")
     //表示項目を基準年度格納欄を参照した数字に編集
}

後にデータベースに書き込むことになるのでボックスへのバインドで処理したいのです。
よろしくお願いします
引用返信 編集キー/
■68989 / inTopicNo.2)  Re[1]: チェックリストボックスへのバインドと項目編集
□投稿者/ 魔界の仮面弁士 (437回)-(2013/11/27(Wed) 16:14:03)
No68988 (Яアルビノフォックス さん) に返信
> 分類:[VB.NET/VB2005 以降] 
> 開発環境はVS2010、言語はc#です

どちらを信じればよいのやら。(^_^;)


> これをチェックリストボックスにバインドしたいのですが
バインドはサポートされていないので、個別に割り当ててください。

http://msdn.microsoft.com/ja-jp/library/system.windows.forms.checkedlistbox%28vs.100%29.aspx
》メモ
》 CheckedListBox にはデータをバインドできません。 代わりに、ComboBox または ListBox を
》 使用します。詳細については、「方法 : Windows フォームの ComboBox または ListBox コントロールを
》 データにバインドする 」を参照してください。


という事で、こういったものを作成される方もいるようで。

[Bindable CheckedListBox]
http://www.codeproject.com/Articles/14916/Bindable-CheckedListBox


あるいは DataGridView で代用するとか。
引用返信 編集キー/
■68990 / inTopicNo.3)  Re[1]: チェックリストボックスへのバインドと項目編集
□投稿者/ 魔界の仮面弁士 (438回)-(2013/11/27(Wed) 16:45:55)
No68988 (Яアルビノフォックス さん) に返信
> 後にデータベースに書き込むことになるのでボックスへのバインドで処理したいのです。


特に CheckedListBox へのこだわりが無いのであれば、
単純に CheckBox を並べて使うと言う手もあります。



// 実際はデータベースから取得
DataSet CreateSample()
{
    var ds1 = new DataSet();
    var tbl = ds1.Tables.Add("TBL");
    tbl.Columns.Add("管理番号", typeof(int));
    tbl.Columns.Add("基準年度-2", typeof(bool));
    tbl.Columns.Add("基準年度-1", typeof(bool));
    tbl.Columns.Add("基準年度-0", typeof(bool));
    tbl.Columns.Add("基準年度格納", typeof(int));
    tbl.PrimaryKey = new DataColumn[] { tbl.Columns["管理番号"] };

    tbl.Rows.Add(1, true, true, true, 2010);
    tbl.Rows.Add(2, true, true, false, 2011);

    return ds1;
}

private DataSet ds;
private void Form1_Load(object sender, EventArgs e)
{
    ds = CreateSample();

    bindingSource1.DataSource = ds.Tables["TBL"];

    comboBox1.DataSource = bindingSource1;
    comboBox1.DisplayMember = "管理番号";

    checkBox1.DataBindings.Add("Checked", bindingSource1, "基準年度-2");
    checkBox2.DataBindings.Add("Checked", bindingSource1, "基準年度-1");
    checkBox3.DataBindings.Add("Checked", bindingSource1, "基準年度-0");
}

private void bindingSource1_CurrentChanged(object sender, EventArgs e)
{
    var row = ((DataRowView)bindingSource1.Current).Row;
    int y = (int)row["基準年度格納"];

    checkBox1.Text = string.Format("{0}年度", y - 2);
    checkBox2.Text = string.Format("{0}年度", y - 1);
    checkBox3.Text = string.Format("{0}年度", y - 0);
}

引用返信 編集キー/
■68992 / inTopicNo.4)  Re[2]: チェックリストボックスへのバインドと項目編集
□投稿者/ Яアルビノフォックス (3回)-(2013/11/27(Wed) 17:24:26)
No68990 (魔界の仮面弁士 さん) に返信
> 特に CheckedListBox へのこだわりが無いのであれば、
> 単純に CheckBox を並べて使うと言う手もあります。

初期のプロットが年度加算方式だったのでチェックボックスを増やす必要があるかな?と思って CheckedListBox を選んだのですが、
バインド対応していない以上、 CheckBox にバインドして使ったほうがよさそうですね。

頂いたコード参考にさせていただきます。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -