3

vb.net / winformsで、ハッシュテーブルをドロップダウンリストまたはその他のデータソース駆動型コントロールにバインドするにはどうすればよいですか?

4

6 に答える 6

4

Just use the dropdown lists's Datasource property

   DropDownList dd = new DropDownList();
   Hashtable mycountries = New Hashtable();
   mycountries.Add("N","Norway");
   mycountries.Add("S","Sweden");
   mycountries.Add("F","France");
   mycountries.Add("I","Italy");
   dd.DataSource=mycountries;
   dd.DataValueField="Key";
   dd.DataTextField="Value";
   dd.DataBind();
于 2008-11-18T14:46:16.040 に答える
2

これは winforms、wpf、または asp.net ですか? [更新: ああ... winforms ;-p]

winforms は、データがIList(または、間接的に、経由でIListSource) あることを望んでいるので、winforms を使用していると (コメントから) 推測しています。組み込みの辞書のようなコレクションはどれも を実装IListしていませんが、正直なところ、それは問題ではありません。データバインディングを行っている場合、ボリュームはおそらくかなり小さいので、通常のリストで問題ありません。

最適なオプションは、List<T>またはBindingList<T>のようなもので、バインド先のすべてのプロパティがTあります。これはオプションですか?1.1 にこだわっている場合 (HashTableではなく言及しているためDictionary<,>)、 を使用してArrayListください。

例 (C#):

class MyData
{
    public int Key { get; set; }
    public string Text { get; set; }
}
[STAThread]
static void Main()
{
    var data = new List<MyData>
    {
        new MyData { Key = 1, Text = "abc"},
        new MyData { Key = 2, Text = "def"},
        new MyData { Key = 3, Text = "ghi"},
    };
    ComboBox cbo = new ComboBox
    {
            DataSource = data,
            DisplayMember = "Text",
            ValueMember = "Key"
    };
    cbo.SelectedValueChanged += delegate {
        Debug.WriteLine(cbo.SelectedValue);
    };
    Application.Run(new Form {Controls = {cbo}});
}
于 2008-11-18T15:08:05.713 に答える
1

Order という特定のオブジェクトの例:

List<Order> list = new List<Order>{};

foreach (Order o in OOS.AppVars.FinalizedOrders.Values)
{
  list.Add(o);
}

this.comboBox_Orders.DataSource = list;
this.comboBox_Orders.DisplayMember = "Description";

これの素晴らしい点は、(asp.net のように値フィールドだけでなく) 元のオブジェクトとしてリストからデータを取り戻せることです。

Order order = (Order)this.comboBox_Orders.SelectedValue;
于 2010-01-22T18:34:28.590 に答える
0

.tolistを使用します。また、エンティティフレームワークのビュー/ストアドプロシージャから取得する返された複合型に対しても機能します

于 2010-09-14T11:58:57.353 に答える
0
myCtrl.DataSource = myHashtable
myCtrl.DataBind()

Example source of bindable control:

<itemtemplate>
    <%# DataBinder.Eval(Container.DataItem, "Key", "<td>{0}</td>") %>
    <%# DataBinder.Eval(Container.DataItem, "Value", "<td>${0:f2}</td>") %>
</itemtemplate>
于 2008-11-18T14:49:05.003 に答える
0

また、辞書をデータソースとして使用する場合は、次を使用できます

MyDDL.Datasouce = myDict.ToList();

そしてそれをリスト型に変換します。

于 2010-05-13T15:56:20.643 に答える