2009-05-04 27 views
2

私はコントロールにdatarowsをバインドする必要があります。ここまでは順調ですね。問題は今、私のdatarowには、私がバインドしなければならない列の文字列だけが含まれていますが、もちろんCheckboxのプロパティ "checked"はboolean引数だけをとります。stringboxのチェックボックスのデータバインディング

ここでデータバインディングを使用する方法はありますか?その間に何らかのコンバータがあるのでしょうか?

おかげ

+0

ASP.NETまたは勝つフォーム? – Oakcool

+0

ブール値の文字列表現として何を使用していますか? '正誤'? '1'/'0'?いくつかのコード、おそらくあなたがコントロールをバインドするコードを助けるかもしれません。 – Phaedrus

答えて

11

ConvertEventHandler Delegateを使用して、データバインディングのタイプを変更します。

Binding binding = new Binding("checked", dt, "string_field"); 
    binding.Format += new ConvertEventHandler(binding_Format); 
    binding.Parse += new ConvertEventHandler(binding_Parse); 
    this.checkbox1.DataBindings.Add(binding); 

    void binding_Format(object sender, ConvertEventArgs e) 
    { 
     if (e.Value.ToString() == "yep") e.Value = true; 
     else e.Value = false; 
    } 

    void binding_Parse(object sender, ConvertEventArgs e) 
    { 
     if ((bool)e.Value) e.Value = "yep"; 
     else e.Value = "nope"; 
    } 
+1

今すぐ便利です! :) +1 – roosteronacid

+0

ありがとう。 しかし、まだ1つの質問。 ConvertEventHandlerは私の値を文字列に変換してデータベースに戻しますか?つまり、DataBindingは両方の方法をカバーすることを意味します。 – lostiniceland

+0

はい、Parseイベントを使用して文字列に変換できます。私はこれを示すために例を更新しました。 –

-1

CBがチェックすべきかどうかを決定するのDataRowにそれは何ですか?セルの値がDBNULL.valueでない場合はそれですか?

+0

これは答えではありません。それはコメントとしてもっと適切です。 – ricksmt

+0

申し訳ありません、ricksmt。撮影ポイント。 – aape

関連する問題