vb.net - sugerencias - La lista desplegable solo debe mostrar el miembro de la pantalla
como buscar dentro de una lista desplegable (3)
UltraCombo generará todas las columnas automáticamente. Puede agregar la columna que desee antes de configurar el origen de datos y establecer cboUltra.DisplayLayout.NewColumnLoadStyle en NewColumnLoadStyle.Hide o puede ocultar todas las columnas, excepto la que desee después de haber sido creada, al recorrerlas en bucle en el evento InitializeLayout y poniéndolos todos ocultos excepto el que quieras.
También puede ver UltraComboEditor ya que solo muestra una sola columna. Si estas son opciones para ti dependerán de las características que necesites en tu menú desplegable.
He vinculado una colección a ultracombo
y he especificado el value member
y el de display member
. Las colecciones tienen muchas columnas. Ahora tengo que mostrar solo una columna en la pantalla y una columna asignada al value member
. Ahora veo que todas las columns
de las colecciones se muestran como multicolumn
.
//Código
cboUltra.ValueMember = "LookupValue"
cboUltra.DisplayMember = "LookupValueDescription"
cboUltra.DataSource = LoadLookupDetails(Field.LookUpCode)
UltraGridRow.Cells("FieldValue").ValueList = cboUltra
¿Cómo puedo lograr eso?
En C # puedes probar lo siguiente: -> Agrega "ultraCombo1" como tu ultra combo ... en la carga de formularios prueba con el siguiente código:
private void Form1_Load(object sender, EventArgs e)
{
// Fill data in ultracombo datasource
DataTable dtt = new DataTable();
dtt.Columns.Add("ID", typeof(int));
dtt.Columns.Add("Name", typeof(string));
dtt.Columns.Add("Age", typeof(int));
dtt.Columns.Add("Address", typeof(string));
dtt.Columns.Add("Sex", typeof(string));
dtt.Rows.Add(new object[] {1,"Name1",20,"Address 1","Male"});
dtt.Rows.Add(new object[] { 2, "Name2", 21, "Address 2", "Male" });
dtt.Rows.Add(new object[] { 3, "Name3", 22, "Address 3", "Female" });
dtt.Rows.Add(new object[] { 4, "Name4", 23, "Address 4", "Male" });
dtt.Rows.Add(new object[] { 5, "Name5", 24, "Address 5", "Female" });
ultraCombo1.DataSource = dtt;
ultraCombo1.DataBind();
//---------------------------------
// hide all but show "ID" and "Name" only
ultraCombo1.ValueMember = "ID";
ultraCombo1.DisplayMember = "Name";
for (int i = 0; i < ultraCombo1.Rows.Band.Columns.Count; i++)
{
ultraCombo1.Rows.Band.Columns[i].Hidden = true;
}
ultraCombo1.Rows.Band.Columns["ID"].Hidden = false;
ultraCombo1.Rows.Band.Columns["Name"].Hidden = false;
}
Su ultracombo se completará con un miembro de valor de "ID" y un miembro de pantalla de "Nombre" solo ..
Aquí hay un método de extensión que ocultará todas las columnas además de la columna DisplayMember
.
<Extension()>
Public Sub ShowOnlyDisplayMemberColumn(this As UltraCombo)
Dim columnName As String = this.DisplayMember
For Each band As UltraGridBand In this.DisplayLayout.Bands
For i As Integer = 0 To band.Columns.Count - 1
Dim column As UltraGridColumn = band.Columns(i)
If (column.Key = columnName) Then
column.Hidden = False
column.Width = this.Width
Else
column.Hidden = True
End If
Next
Next
End Sub