mvc kendo example editable demos javascript kendo-ui telerik kendo-grid telerik-grid

javascript - example - ¿La publicación de la rejilla de la interfaz de usuario de Kendo se procesó o se publicó después del evento?



kendo js demos (1)

Vea este código de muestra tomado de la documentation (los documentation API sobre eventos están here ) sobre cómo enlazar un controlador de eventos usando envoltorios MVC:

@(Html.Kendo().Grid(Model) .Name("grid") .Events(e => e .DataBound("grid_dataBound") .Change("grid_change") ) ) <script> function grid_dataBound() { //Handle the dataBound event } function grid_change() { //Handle the change event } </script>

Si desea vincular un controlador en JavaScript, debe acceder a la cuadrícula de esta manera:

var grid = $("#grid").data("kendoGrid"); grid.bind("dataBound", function(e) {});

Cuando haces esto aquí:

$(''#grid'').kendoGrid({ dataBound: function(e) { console.debug(''data bound..''); } });

realmente creas una nueva instancia de grilla

¿Hay alguna manera de desencadenar un evento después de que la cuadrícula se haya recargado a través de ajax?

Veo el evento RequestEnd . pero eso parece ocurrir cuando se devuelve la solicitud, pero antes de que la cuadrícula se haya actualizado.

También veo el evento DataBound . pero eso sucede incluso antes que RequestEnd,
También cuando implemento el evento DataBound, mi encabezado desaparece.

Tuve que recurrir a este hack

function requestEnd(o) { console.debug(''request ended.'', o); setTimeout(refreshEditable, 500); // enough time to render the grid } function refreshEditable() { // perform my actions on controls within grid content }

Como nota al margen ... Me está costando mucho encontrar una referencia confiable de la API de kendo grid mvc. cuando busco en Google, obtengo esto: http://docs.telerik.com/kendo-ui/getting-started/using-kendo-with/aspnet-mvc/migration/widgets/grid que es una colección de poco cómo -a y algunos "Eventos", pero esos no corresponden a lo que estoy viendo en la navis intelisense.

actualización : añadiendo definición de base de datos

$(''#grid'').kendoGrid({ dataBound: function(e) { console.debug(''data bound..''); } });

y aquí está la definición ajax rejilla

.Ajax().Read(read => read .Action("FilesRead", "SomeController") .Data("readData")) function readData() { return { IncludeChildren: $("#IncludeChildren").is('':checked''), SearchString: $(''input[id=SearchString]'').val() }; }

Puedo ver que DataBound se activa al realizar la llamada ajax, no después de que vuelve.

actualizar

Corregido el gancho del evento DataBound.

en la función dataBound, estoy tratando de obtener una referencia a las plantillas recién renderizadas ..

function dataBound(o) { console.debug($(''span.editable'').length); // returns 0 setTimeout("console.debug($(''span.editable'').length)", 500); // returns 4 }

Los intervalos se agregan utilizando una plantilla de cliente

.ClientTemplate(@"<span class=""editable"" ... >#=DOCUMENT_DATE_FORMATTED#</span>");

¿Ves lo que quiero decir? El límite de datos ocurre antes de que se muestre la cuadrícula