データテーブルをTelerikKendoGridにバインドしようとすると、次のエラーが発生します。
インデックスが範囲外でした。負ではなく、コレクションのサイズよりも小さい必要があります。
Telerikのサンプルプロジェクトに従いましたが、私のコードでは、「DataSource」の「Read」関数で失敗しているようです。
.Read(read => read.Action( "Read"、 "Events"))
ActionResult Read()が現在nullを返しているのは、それがその関数に到達するかどうかを確認したかったからです。また、ステップスルーしたところ、データテーブルは正しい列と列名を返しています。
どんな助けでも大歓迎です。
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;
}
}
アップデート::
これがスタックトレースです。それが役立つかどうかはわかりません。
[ArgumentOutOfRangeException:インデックスが範囲外でした。負ではなく、コレクションのサイズよりも小さい必要があります。 パラメータ名:インデックス] 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ライター、WebPageRenderingBase startPage)+76 System.Web.Mvc.RazorView.RenderView(ViewContext viewContext、TextWriterライター、オブジェクトインスタンス)+260 System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext、TextWriterライター)+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フィルター、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