Telerik MVC Grid-Ajax-mit manuell-Bindung
Ich habe eine Telerik MVC Grid mittels ajax Daten zu erhalten, und ich will die Kontrolle, wenn es geladen wird.
Hier ist der code aus meiner Sicht:
@(Html.Telerik().Grid<ViewModels.Reports.UserActionLoggingDetailViewModel>()
.Name("UserActionLoggingFollowedGrid")
.DataBinding(dataBinding => dataBinding.Ajax().Select("SelectUserActionLogging", "Report", new { userTeamId = Model.UserTeamId, startDate = Model.StartDate, endDate = Model.EndDate }).OperationMode(GridOperationMode.Client))
.Columns(columns =>
{
columns.Bound(x => x.FullName).Hidden();
columns.Bound(x => x.ActionName);
columns.Bound(x => x.ActionCount);
})
.Pageable(page => page.PageSize(20))
.Sortable()
.Groupable(grouping => grouping.Groups(groups => groups.Add(c => c.FullName)).Visible(false))
.Filterable()
.Localizable("fr-FR")
.HtmlAttributes(new { @class = "grid-style static-grid-style" })
.ClientEvents(e => e.OnError("Grid_onServerError").OnDataBinding("Grid_onDataBinding").OnDataBound("Grid_onDataBound"))
)
Standardmäßig ist dieser code ordnungsgemäß funktioniert. Wenn die Seite geladen wird, wird das raster automatisch eine post-Anforderung an den server für die angegebene Aktion und laden sich mit den zurückgegebenen Daten.
Was ich will, ist das gleiche Netz mit demselben Verhalten, aber ohne das laden der Daten, wenn die Seite geladen ist; ich will das raster geladen werden, wenn der Benutzer auf eine Schaltfläche klickt oder andere Aktionen.
Fand ich einige interessante Beiträge, die angibt, wie Sie manuell aktualisieren Sie die raster, aber niemand festgelegt, wie zu verhindern, dass die ursprüngliche Bindung des Rasters.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieses kleine Stück für mich funktioniert. Fügen Sie ein data binding client-Ereignis (das Sie bereits haben, offenbar):
Erstellen, dann fügen Sie dieses javascript:
Im Grunde erstellen Sie ein array zu verfolgen, die Netze, die binden müssen. Wenn die Seite geladen wird, wird das array leer ist - an diesem Punkt bricht die Datenbindung Ereignis und fügt das grid array. Dann das nächste mal ajaxRequest() aufgerufen wird, wird der raster existiert in dem array und gebunden werden können, die in der Regel.
Ich denke, dass Sie können fügen Sie einen Ereignishandler für die Datenbindung Datenbindung oder Ereignisse, die für das Stromnetz und prüfen Sie, ob es ist der erste laden der Seite da. Wenn ja, benutzen Sie e.preventDefault (), um zu vermeiden, um den Anruf an den server.
Andere option könnte sein, entfernen Sie die ajax-Bindung aus der Grid-Erklärung und tun Sie es selbst mit der dataBind-Methode