ich die folgende Fehlermeldung erhalten, wenn eine Datentabelle auf einen Telerik Kendo Grid zu binden versuchen:Kendo ASP.NET MVC - Index Out of Range Databinding
Index außerhalb des zulässigen Bereichs war. Muss nicht negativ und kleiner als die Größe der Sammlung sein.
Ich habe Telerik Beispielprojekt verfolgt, aber in meinem Code scheint es auf der 'Lesen' Funktion 'Datasource' werden Fehler:
.Read (lesen => read.Action ("Read "," Ereignisse "))
Ich habe ActionResult Read() gibt gerade null zurück, nur weil ich sehen wollte, ob es überhaupt zu dieser Funktion kommen würde. Außerdem bin ich durchgetreten und die Datentabelle gibt die korrekten Spalten- und Spaltennamen zurück.
Jede Hilfe wird geschätzt.
Events.cshtml
@model System.Data.DataTable
@{
ViewBag.Title = "Events";
Layout = "~/Views/_mainLayout.cshtml";
}
<p>Events</p>
@(Html.Kendo().Grid(Model)
.Name("GridStatic")
.Columns(columns =>
{
columns.Bound("ID");
columns.Bound("EntryType");
columns.Bound("EventDate");
columns.Bound("EventData");
columns.Bound("Source");
})
.Pageable()
.Sortable()
.Scrollable()
.Filterable()
.DataSource(dataSource => dataSource
.Ajax()
.Model(model =>
{
model.Field("ID", typeof(int));
model.Field("EntryType", typeof(DateTime));
model.Field("EventDate", typeof(string));
model.Field("EventData", typeof(string));
model.Field("Source", typeof(string));
})
.Read(read => read.Action("Read", "Events"))
)
)
EventsController.cs
public class EventsController : Controller
{
//
// GET: /Events/
public ActionResult Events(string sName)
{
EventReader ereader = new EventReader(sName);
return View(ereader.ParseIntoTable(ereader.GetListOfEvents()));
}
public ActionResult Read([DataSourceRequest] DataSourceRequest request)
{
return null;
}
}
UPDATE ::
Hier ist der Stack-Trace, ich bin nicht sicher, ob das wird helfen.
[ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index] System.ThrowHelper.ThrowArgumentOutOfRangeException() +72 System.Collections.ObjectModel.Collection`1.set_Item(Int32 index, T value) +10451574 System.Web.Mvc.ControllerContext.get_RequestContext() +25 Kendo.Mvc.UI.NavigatableExtensions.GenerateUrl(INavigatable navigatable, ViewContext viewContext, IUrlGenerator urlGenerator) +52 Kendo.Mvc.UI.Fluent.CrudOperationBuilder.SetUrl() +81 Kendo.Mvc.UI.Fluent.CrudOperationBuilder.Action(String actionName, String controllerName, Object routeValues) +66 Kendo.Mvc.UI.Fluent.CrudOperationBuilder.Action(String actionName, String controllerName) +47 ASP._Page_Views_Events_Events_cshtml.b__3(CrudOperationBuilder read) in c:\Users\wsharp\Documents\Visual Studio 2010\Projects\Inviso\Inviso\Views\Events\Events.cshtml:40 Kendo.Mvc.UI.Fluent.AjaxDataSourceBuilderBase`2.Read(Action`1 configurator) +131 ASP._Page_Views_Events_Events_cshtml.b__2(DataSourceBuilder`1 dataSource) in c:\Users\wsharp\Documents\Visual Studio 2010\Projects\Inviso\Inviso\Views\Events\Events.cshtml:30 Kendo.Mvc.UI.Fluent.GridBuilder`1.DataSource(Action`1 configurator) +212 ASP._Page_Views_Events_Events_cshtml.Execute() in c:\Users\wsharp\Documents\Visual Studio 2010\Projects\Inviso\Inviso\Views\Events\Events.cshtml:16 System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +197 System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +97 System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +76 System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +260 System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +115 System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +295 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13 System.Web.Mvc.c__DisplayClass1a.b__17() +23 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +242 System.Web.Mvc.c__DisplayClass1c.b__19() +21 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +177 System.Web.Mvc.Async.c__DisplayClass2a.b__20() +89 System.Web.Mvc.Async.c__DisplayClass25.b__22(IAsyncResult asyncResult) +102 System.Web.Mvc.Async.WrappedAsyncResult`1.End() +57 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +43 System.Web.Mvc.c__DisplayClass1d.b__18(IAsyncResult asyncResult) +14 System.Web.Mvc.Async.c__DisplayClass4.b__3(IAsyncResult ar) +23 System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +57 System.Web.Mvc.Async.c__DisplayClass4.b__3(IAsyncResult ar) +23 System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +47 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10 System.Web.Mvc.c__DisplayClass8.b__3(IAsyncResult asyncResult) +25 System.Web.Mvc.Async.c__DisplayClass4.b__3(IAsyncResult ar) +23 System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +47 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9629296 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
Wenn Sie eine leere Ergebnismenge zurückgeben, funktioniert es ??? –
@BrianMains - Ich habe es so eingestellt, dass es eine leere Datentabelle zurückgibt, aber den gleichen Fehler hat. – fortune