¿Es posible configurar el DataSource de un Kendo ListView sin tener el DataSource y luego llamar al método read() ?
Tengo un origen de datos principal que estoy usando en un ListView y en todos los ListView secundarios, pero solo lo estoy filtrando para cada ListView según algunas condiciones. La forma en que estoy haciendo esto es una vez que todos los datos se han vinculado al ListView principal, luego creo todos los ListView secundarios y asigno la misma fuente de datos con filtrado.
El problema que tengo aquí es que una vez que asigno el origen de datos filtrado al nuevo ListView, parece estar llamando al método de lectura nuevamente.
baSurveyGroupTemplateDataSource: new kendo.data.DataSource({ transport: { read: { async: false, url: "/Url/to/data" dataType: "json", type: "GET", data: { id: $("#TemplateId").val() }, } } }), groupDataBound: function (e) { $(".childBaSuveyGroupTemplate").each(function () { viewModel.seedGroup(this); }); }, seedGroup: function (parentGroup) { var childrenGroupList = $(parentGroup); var parentGroupId = childrenGroupList.data("id"); var childrenGroupDataSource = new kendo.data.DataSource(viewModel.baSurveyGroupTemplateDataSource); childrenGroupDataSource.query({ filter: ({ field: "BaSurveyGroupTemplateParentId", operator: "eq", value: parentGroupId }) }); childrenGroupList.kendoListView({ template: kendo.template($("#baSurveyGroupTemplateDisplayTemplate").html()), dataSource: childrenGroupDataSource }); }Avísame si necesito aclarar algo. Es difícil intentar poner en palabras lo que estoy haciendo y el problema que tengo.
Intente agregar esto a su configuración de ListView:
autoBind: falseDe la documentación de kendo en http://docs.telerik.com/kendo-ui/api/javascript/ui/listview#configuration-autoBind
Si se establece en falso, el widget no se enlazará con la fuente de datos durante la inicialización. En este caso, el enlace de datos se producirá cuando se active el evento de cambio de la fuente de datos. De forma predeterminada, el widget se enlazará con la fuente de datos especificada en la configuración.
Establecer autoBind en falso es útil cuando varios widgets están vinculados a la misma fuente de datos. La desactivación del enlace automático garantiza que la fuente de datos compartida no realice más de una solicitud al servicio remoto.
Luego active manualmente la lectura de la fuente de datos una vez que haya configurado todo:
childrenGroupDataSource.read(); // "read()" will fire the "change" event of the dataSource and the widget will be bound