Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] knockout: Cargar DropDownList con un valor seleccionado por Defecto.

Estas en el tema de knockout: Cargar DropDownList con un valor seleccionado por Defecto. en el foro de Jquery en Foros del Web. Hola Foreros !!! La verdad es que el título no es del todo todo descriptivo. Realmente si soy capaz de cargar un DropDownList, pero no ...
  #1 (permalink)  
Antiguo 28/04/2013, 07:26
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 5 meses
Puntos: 7
knockout: Cargar DropDownList con un valor seleccionado por Defecto.

Hola Foreros !!!

La verdad es que el título no es del todo todo descriptivo. Realmente si soy capaz de cargar un DropDownList, pero no soy capaz de que aparezca un valor por defecto seleccionado (Al menos, como yo quiero).

He visto ejemplos en la página de Knockout, pero tal y como ellos lo ponen a mi no me sirve, por que el ejemplo es para cosas fáciles. Les explico...

Tengo un ViewModel de la siguiente manera:

Código:
        function ViewModel() 
        {

            var self = this;

            self.CertificationTypeList = ko.observableArray();
            self.CertificationList = ko.observableArray();

            .............
            .............
            .............
        }
En CertificationTypeList cargo una serie de objetos que indican los tipos de certificaciones que hay para mi aplicacion.

En CertificationList cargo una serie de objetos de tipo certificaciones que hay en mi aplicación. Estos objetos tienen una propiedad que es CertificationType que es idéntica a un objeto de los que hay en CertificationTypeList.

Bien, con todo esto debidamente cargado, muestro una tabla con las certificaciones:

(El problema está en el último TD, lo demás está bien)
Código:
            <tbody data-bind="foreach: CertificationList">
                <tr>
                    <td>
                        <label id="lblCertificationCode" data-bind="text: Code"></label>
                        <input style="visibility:collapse; width:10px" class="TextEdit"
                               type="text" 
                               id="txtEditCertificationCode" 
                               data-bind="text: Code" />
                    </td>
                    <td>
                        <label id="lblCertificationName" data-bind="text: CertificationName"></label>
                        <input style="visibility:collapse;" class="TextEdit"
                                type="text"
                                id="txtEditCertificationName"
                                data-bind="text: CertificationName" />
                    </td>
                    <td>
                        <select data-bind="options: CertificationTypeList,
                                           optionsText: function(item) { 
                                                return item.TypeName
                                           },
                                           optionsValue: function(item) { 
                                                return item.Code
                                           },
                                           value: CertificationType().Code" id="cmbCertificationType"></select>
                    </td>
                </tr>
            </tbody>
Por lo que veo, el problema está, que al enlazar la "tabla" con la propiedad CertificationList del ViewModel, después no es capaz de hacer un Bind, con la otra propiedad del ViewModel CertificationTypeList que es donde realmente tengo los tipos de de Certificación.

No sé si me he explicado... pero bueno, espero que sí y que puedan ayudarme jejeje.

Gracias de antemano por leer el post. : )
__________________
Charlie.
  #2 (permalink)  
Antiguo 28/04/2013, 07:32
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 5 meses
Puntos: 7
Respuesta: knockout: Cargar DropDownList con un valor seleccionado por Defecto.

He conseguido que al menos me cargue el combo y ya no me de error por no encontrar la propiedad CertificationTypeList del ViewModel, pero ahora el problema que persiste es que no aparece el DropDownList con e valor seleccionado correspondiente.

Al poner la palabra clave $parent ha sido capaz de localizarme la propiedad principal del ViewModel
Código:
<select data-bind="options: $parent.CertificationTypeList,
                    optionsText: function(item) { 
                        return item.TypeName
                    },
                    optionsValue: function(item) { 
                        return item.Code
                    },
                    value: CertificationType().Code" id="cmbCertificationType"></select>
__________________
Charlie.
  #3 (permalink)  
Antiguo 28/04/2013, 07:47
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 5 meses
Puntos: 7
Respuesta: knockout: Cargar DropDownList con un valor seleccionado por Defecto.

La propiedad optionsValue del DataBind, no se puede establecer como una function, como si se puede hacer en optionsText. Ya funciona perfectamente:

Código:
                    <td>
                        <label id="lblCertificationType" data-bind="text: CertificationType().TypeName"></label>
                        <select data-bind="options: $parent.CertificationTypeList,
                                           optionsText: function(item) { 
                                                return item.TypeName
                                           },
                                           optionsValue: 'Code',
                                           value: CertificationType().Code" id="cmbCertificationType"></select>
                    </td>
__________________
Charlie.
  #4 (permalink)  
Antiguo 29/04/2013, 10:02
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 5 meses
Puntos: 7
Respuesta: knockout: Cargar DropDownList con un valor seleccionado por Defecto.

Aquí habia otro mensaje pero que no iba para este hilo.
__________________
Charlie.

Etiquetas: dropdownlist, seleccionado, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:47.