私が使用しているカスタムコントロールライブラリがあり、から継承するコントロールの場合はDataTextField
とほぼ同じように動作するDataCodeField
というプロパティを追加しました。プロパティをカスタムコントロールにバインドする
DummyData data1 = new DummyData(12, "Jon", 1);
DummyData data2 = new DummyData(15, "Bill", 2);
DummyData data3 = new DummyData(23, "Ted", 1);
var people = new List<DummyData>{data1, data2, data3};
ddlTest.DataSource = people;
ddlTest.DataTextField = "Name";
ddlTest.DataCodeField = "Age";
ddlTest.DataValueField = "Id";
ddlTest.DataBind();
var id = ddlTest.SelectedValue;
var index = ddlTest.SelectedIndex;
var name = ddlTest.SelectedItem;
var age = ??
私は新しいDataCodeField
にそれを結合した場合、人物の年齢を見つける必要があります。これを行うにはOnDataBinding
イベントを無効にする必要があることはわかっていますが、どこから開始するのか分からないようです。どんな助けもありがとう。私の最終目標は、コンボボックスがデータ収集された後、このような時代にアクセスすることです。
また、バインドされたデータソースにアクセスし、selectedIndexに基づいてそのオブジェクトから年齢にアクセスする方法がありますか?
これは役に立ちますが、 'ddlTest'コントロールから値を取得しようとしているときのコントロールのタイプは何ですか?それが最初に定義したタイプでない場合は、あなたのタイプにキャストしたいかもしれません。 – MilkyWayJoe
私はエキスパートではありませんが、データをDDLにバインドするときに、ペア(名前、値)である必要はありません。そうでないとエラーが発生します。あなたのコードは、私が上で指摘したもの以外は問題ありません。 –
正しいタイプです。これは、バインドされたデータソースからオブジェクトを取得することと関係しています。 – joncodo