4

Kendo.Grid にデータを表示するのに少し問題があります。

JSON は有効であり、テキストとしてリンクをクリックすると表示されますが、グリッドにデータをロードします。

ここにソースがあります。

br。エロ

コントローラ

public ActionResult Index([DataSourceRequest]DataSourceRequest  request)
    {
        using (var db = new CimDataContext())
        {
            IQueryable<Customer> customers = db.Customers;
            DataSourceResult result = customers.ToDataSourceResult(request);
            return Json(result, "text/x-json", JsonRequestBehavior.AllowGet);
        }
    }

インデックス.cshtml

@(Html.Kendo().Grid<KendoUIMvcCim.Models.Customer>()
  .Name("grid")
  .DataSource(dataSource => dataSource 
      .Ajax() 
      .Read(read => read.Action("Index", "Customer")) 
   )
  .Columns(columns =>
  {
      columns.Bound(customer => customer.Id);
      columns.Bound(customer => customer.Name);
      columns.Bound(customer => customer.Number);
      columns.Bound(customer => customer.AgentID);
      columns.Bound(customer => customer.Info);
      columns.Bound(customer => customer.Email);
      columns.Bound(customer => customer.StartTime);
      columns.Bound(customer => customer.EndTime);
      columns.Bound(customer => customer.Category);
  })
  .Pageable() 
  .Sortable() 

)

ブラウザでの結果

{"Data":[{"Id":2,"Name":"Name1","Number":"040000000","AgentID":"1","Info":"info1","Email":"email1","StartTime":"\/Date(1360101600000)\/","EndTime":null,"Category":"Laser"},{"Id":3,"Name":"Name2","Number":"0400000000","AgentID":"2","Info":"info2","Email":"email2","StartTime":"\/Date(1360188000000)\/","EndTime":null,"Category":"Kaihi"}],"Total":2,"AggregateResults":null,"Errors":null}
4

3 に答える 3

5

問題は、アクション メソッドが JSON 文字列を返し、ビューがKendoUIMvcCim.Models.Customer. これに対処するには、コントローラーで 2 つの異なるアクション メソッドを使用します。

  1. 最初のアクションは ViewResult を返し、ビューに必要です

    public ViewResult Index()
    {
      using (var db = new CimDataContext())
      {
        IQueryable<Customer> customers = db.Customers;
        return View(customers);
      }
    }
    
  2. 2 番目のアクションは ActionResult を返し、グリッドが AJAX 呼び出しを介して入力するために必要です。

    public ActionResult Customers_Read([DataSourceRequest]DataSourceRequest request)
    {
      using (var db = new CimDataContext())
      {
        IQueryable<Customer> customers = db.Customers;
        DataSourceResult result = customers.ToDataSourceResult(request);
        return Json(result, "text/x-json", JsonRequestBehavior.AllowGet);
      }
    }
    

Index.cshtmlファイルでは、コントローラーで正しいアクション メソッドを呼び出すように、最終的に行変更する必要があります。.Read

  .DataSource(dataSource => dataSource 
      .Ajax() 
      .Read(read => read.Action("Customers_Read", "Customer")) 
   )
于 2013-08-27T09:33:37.973 に答える
2

私はそれが古い投稿であることを知っていますが、まだ苦労している人のために:

剣道のドキュメントからコピー/貼り付けする場合は、ファイルに既に含まれている可能性があるため、jquery を 2 回含めないようにしてください。

そうは言っても、jQuery 参照をページの下部ではなく HEAD に配置してください。そうしないと、剣道グリッドは実際にインポートされる前に jQuery でレンダリングしようとします。

お役に立てれば

于 2015-09-01T10:44:39.970 に答える
1

最終的な作業コード:

コントローラ

public ViewResult Index()
    {      
            return View();
    }

    public ActionResult Customers_Read([DataSourceRequest]DataSourceRequest request)
    {
        using (var db = new CimDataContext())
        {
            IQueryable<Customer> customers = db.Customers;
            DataSourceResult result = customers.ToDataSourceResult(request);
            return Json(result, JsonRequestBehavior.AllowGet);
        }
    }

インデックス.cshtml

@(Html.Kendo().Grid<KendoUIMvcCim.Models.Customer>()
  .Name("grid")
  .DataSource(dataBinding => dataBinding.Ajax().Read(read => read.Action("Customers_Read", "Customer")))
  .Columns(columns =>
  {
      columns.Bound(customer => customer.Id);
      columns.Bound(customer => customer.Name);
      columns.Bound(customer => customer.Number);
      columns.Bound(customer => customer.AgentID);
      columns.Bound(customer => customer.Info);
      columns.Bound(customer => customer.Email);
      columns.Bound(customer => customer.StartTime);
      columns.Bound(customer => customer.EndTime);
      columns.Bound(customer => customer.Category);
  })
  .Pageable() 
  .Sortable() 

)

于 2013-08-27T15:46:28.833 に答える