Hola a todos.
Entorno: Gambas: 3.16.0 y S.O.: Linux Mint 20.1
En un WebForm tengo dos WebComboBox:
- El primero se carga con datos cuando el webform se inicia.
- El segundo se carga con datos cuando se selecciona un elemento del primer WebComboBox.
- En ambos WebComboBox agrego como primer elemento una cadena que referencia su objetivo:
WebComboBox1.Add("*** Secciones ***", 0)
WebComboBox2.Add("*** Categorías ***", 0)
- Ambos WebComboBox se cargan con los datos de sus respectivas tablas de SQLite.
Preguntas:
- ¿Cómo se puede hacer para que el segundo WebComboBox, cuando termina de cargar los datos se posicione en el primer elemento ya que WebComboBox2.Index = 0 no lo hace?.
- ¿Porque el evento _Click de ambos WebComboBox requiere pulsar dos veces para que se ejecute, solo en dispositivos con S.O. Android (Tabletas y celulares) ?.
Saludos y gracias por sus respuestas.
Hola omoreno,
.Index no creo que haga lo que deseas. El ComBobox (el normal) tiene dos parametros, por un lado el texto que se muesta en el y por otro la lista de valores posibles. buen en el WebComboBox si cuando termina de cargar le pones algo como WebComboBox.Text = WebComboBox.List[0] tal vez si suceda lo que esperas.
Es algo que se me ocurre pero no use ese control todavía.
Saludos.
Hola Tincho.
Pence lo mismo del Index, pero la ayuda del Gambas dice esto con respecto al Index en los WebComboBox:
Cita:WebComboBox.Index (gb.web.gui)
Property Index As Integer
Return or set the index of the current selected item.
Probé con
WebComboBox.Text = WebComboBox.List[0]
Ocurre lo mismo, el objeto no muestra ningún elemento seleccionado y en ambos casos ocurre lo mismo.
Nada con
WebComboBox.Text = WebComboBox.List[0]
Nada con
WebComboBox.Index = 0
Con las instrucciones anteriores, el elemento se muestra solo cuando hago una de la siguientes opciones:
- Se recarga el navegador.
- Se invoca el método .Refresh() desde otro evento ejemplo un Click de un botón.
También realice esta prueba en la subrutina donde se carga el
WebComboBox:- Al terminar la carga del segundo WebComboBox force el indice a un valor mayor a cero.
- Agregue una llamada a una subrutina que crea elementos en un WebScrollView dependiendo de los elementos seleccionados en los dos WebComboBox.
Todos los todos los objetos del WebForm se crearon y mostraron sus datos, pero el
WebComboBox no muestra el elemento.
Con respecto a la otra pregunta sobre el evento
_Click doble en Android, nada de solución...
(17-05-2021, 14:58)omoreno escribió: [ -> ]Con respecto a la otra pregunta sobre el evento _Click doble en Android, nada de solución...
No lo se, pero sube el programa y le hecho un vistazo.
Saludos.
He adjuntado un programa de ejemplo.
Verifica y me comentas que se puede estar realizando mal.
Principalmente el problema de tener que dar doble Click en los WebComboBox desde los navegadores web con Android.
Saludos.
Resolví lo del combobox lo del doble click no lo mire.
Código:
Private Sub WebCmbSecciones_Click()
'
Dim VecSecciones As String[] = WebCmbSecciones.Tag
Dim sec As String
Dim cat2 As String
Dim cat As String
sec = VecSecciones[CStr(WebCmbSecciones.Index)]
cat2 = CargarCategorias(sec)
Wait 0.1
For Each cat In WebCmbCategorias.List
If cat = cat2 Then
WebCmbCategorias.Text = cat2
Break
Endif
Next
Catch
Message.Error("WebCmbSecciones_Click: " & Error.Text, "OK")
'
End
Public Function CargarCategorias(SecId As String) As String
'
Dim CatId As New String[]
Dim i As Integer
WebCmbCategorias.Clear()
WebCmbCategorias.Add("*** Categorias ***", 0)
CatId.Add(0)
'
If SecId = "0" Then
WebCmbCategorias.Tag = CatId
WebCmbCategorias.Index = 0
WebCmbCategorias.Refresh()
Return
Endif
'
For i = 0 To DataCat.Count - 1
If Split(DataCat[i], ",")[0] = SecId Then[/i]
CatId.Add(Split(DataCat, ",")[1])
WebCmbCategorias.Add(Split(DataCat, ",")[2])
Endif
Next
'
WebCmbCategorias.Tag = CatId
WebCmbCategorias.Index = 0
Return WebCmbCategorias.List(WebCmbCategorias.Index)
End
Gracias tincho.
Tu código del evento WebCmbSecciones_Click() y el de la function CargarSecciones(SecId) As String ciertamente cargan el primer elemento del segundo WebComboBox, pero ahora no se cargan los elementos filtrados en el segundo WebComboBox.
Me parece extraño que se tenga que recorrer los elementos de un WebComboBox para seleccionar un elemento por texto y no por indice, después de cargarlo con datos desde programación.
Después de algunas pruebas vi que el método WebComboBox.Clear() parece ser el responsable de este extraño caso:
Sabemos que antes de cargar elementos en una lista hay que limpiar para no mezclar datos, pues cuando un WebComboBox tiene datos fijos y no se le aplica .Clear() todo funciona como se esperaba, pero entonce no tengo maneras de cargar de forma dinámica datos en estos WebComboBox.
¿Sera esto un posible Bug.?
Saludos.
(18-05-2021, 00:58)omoreno escribió: [ -> ]¿Sera esto un posible Bug.?
No lo se, sinceramente no use nunca estos controles en nada serio.
Saludos.