propiedades net llenar ejemplos .net combobox sorting selectedvalue

.net - net - llenar combobox c#



.NET ComboBox Binding Issue (5)

El problema es la propiedad Ordenada de ComboBox porque sus datos provienen de una DataTable.

Cuando se usa la propiedad Sorted, ComboBox organiza el DisplayMember solamente e ignora otros datos, ya que no puede modificar el DataTable directamente. Ejemplo:

Datos de DataTable como DataSource sin ordenar

channelType channelTypeID ComboBoxDisplayMember ComboboxValueMember Web 2 Web 2 Mailer 3 Mailer 3 Catalog 4 Catalog 4

ahora con propiedad ordenada

channelType channelTypeID ComboBoxDisplayMemberSorted ComboboxValueMember Web 2 Catalog 2 Mailer 3 Mailer 3 Catalog 4 Web 4

Este problema se puede resolver en la base de datos agregando al final de la consulta: "ORDER BY FieldName" http://technet.microsoft.com/en-us/library/ms188385.aspx

Tengo 2 cuadros combinados, cada uno está vinculado a la misma tabla de datos, así:

channelTypeCB.DataSource = SynergyData.ds.Tables["ChannelTypes"]; channelTypeCB.DisplayMember = "channelType"; channelTypeCB.ValueMember = "channelTypeID"; channelTypeCB.BindingContext = new BindingContext(); newSKChanTypeCB.DataSource = SynergyData.ds.Tables["ChannelTypes"]; newSKChanTypeCB.DisplayMember = "channelType"; newSKChanTypeCB.ValueMember = "channelTypeID"; newSKChanTypeCB.BindingContext = new BindingContext();

Cuando hago clic en un botón para insertar un registro en la base de datos, uso channelType.SelectedValue ... que devuelve el valor incorrecto. Tengo la sensación de que tiene algo que ver con el uso de la ordenación ComboBox (que establecí en las propiedades del control en la vista de diseño). ¿Alguien ha encontrado este problema?

Esto está programado para una aplicación de winforms usando C #

Editar:

Por ejemplo, mi Datatable almacena valores como:

channelType channelTypeID Web 2 Mailer 3 Catalog 4

Esto está ordenado en el cuadro combinado, y cuando selecciono el primer elemento (que sería "Catálogo" cuando está ordenado), SelectedValue devuelve 2, cuando selecciono el segundo elemento, devuelve 3 ... Esperaba que fuera "Catalog" regreso 4



Haría esto de manera diferente: crearía 2 BindingSource separadas, cada una basada en su DataSet , y luego BindingSource cada control DataSource a la BindingSource acaba de crear.


MSDN ComboBox.Sorted

Probablemente relacionado con esto

Intentar establecer la propiedad Sorted en un control vinculado a datos genera una ArgumentException. Debe ordenar los datos utilizando el modelo de datos subyacente.

(No obtuvo ningún error)

Entonces, en lugar de usar ComboBox.sort, estoy ordenando DefaultView de DataTable:

SynergyData.ds.Tables["ChannelTypes"].DefaultView.Sort = "channelType";

No estoy convencido de que esta es la mejor manera de hacerlo, pero funciona, y ahora selectedValue devuelve lo correcto


Puede estar refiriéndose a channelTypeCB.SelectedValue en su código, cuando necesite referirse a newSKChanTypeCB.SelectedValue (esto es una suposición total basada únicamente en sus nombres de control).