valores una tablas tabla realizar para lista hace formato desplegable desde debe crear condicional con como asociados .net vb.net data-binding drop-down-menu hashtable

.net - una - lista desplegable y formato condicional



¿Cómo se puede vincular una tabla hash a una lista desplegable? (6)

¿Esto es winforms, wpf o asp.net? [actualización: ahh ... winforms ;-p]

winforms quiere que los datos sean IList (o, indirectamente, a través de IListSource ), así que supongo (por el comentario) que está utilizando winforms. Ninguna de las colecciones incorporadas tipo diccionario implementan IList , pero para ser honesto, no importa: si usted está vinculando los datos, el volumen es probablemente bastante pequeño, por lo que una lista regular debería estar bien.

La mejor opción es algo así como List<T> o BindingList<T> , donde T tiene todas las propiedades que desea vincular. ¿Es esta una opción? Si está atascado con 1.1 (ya que menciona HashTable lugar de Dictionary<,> ), entonces use ArrayList .

Ejemplo (en 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}}); }

En vb.net / winforms, ¿cómo se puede vincular una tabla hash a una lista desplegable o a cualquier otro control controlado por origen de datos?


Solo use la propiedad Datasource de la lista desplegable

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();


Ejemplo para un objeto dado llamado Orden:

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";

Lo bueno de esto es que puedes recuperar los datos de la lista como el objeto original (no solo el campo de valor como en asp.net).

Order order = (Order)this.comboBox_Orders.SelectedValue;


Utilice .tolist. también funciona para tipos complejos devueltos que obtienes de vistas / procedimientos almacenados en el marco de la entidad


Y, si usa Dictionary como fuente de datos, puede usar

MyDDL.Datasouce = myDict.ToList();

y lo convertirá en un tipo de lista.


myCtrl.DataSource = myHashtable myCtrl.DataBind()

Fuente de ejemplo de control enlazable:

<itemtemplate> <%# DataBinder.Eval(Container.DataItem, "Key", "<td>{0}</td>") %> <%# DataBinder.Eval(Container.DataItem, "Value", "<td>${0:f2}</td>") %> </itemtemplate>