2

Telerik Kendo ListViewASP.NET MVC 4 Web アプリケーションで使用しようとしていますが、データを取り込むのに問題があります。Telerik の Kendo ListView Controller と View の例に従いましたがDataSource、データが取り込まれListViewBuilderていません。以下は、私が使用している関連コードですFooView

@model IEnumerable<FooViewModel>
<script type="text/x-kendo-tmpl" id="template">
    <div class="Foo">        
        <h3>#:FooName#</h3>            
    </div>
</script>

<div class="FooList">
@(Html.Kendo().ListView<FooViewModel>(Model)
    .Name("listView")
    .TagName("div")
    .ClientTemplateId("template")    
    .DataSource(dataSource => 
    {
        dataSource.Read(read => read.Action("Foo_Read","Foo").Type(HttpVerbs.Get));
        dataSource.PageSize(15);        
    })
    .Pageable()
)
</div>

Foo_Read私は処刑されることを期待しFooControllerていますが、そうではありません。Kendo ListViewこれが人口が増えていない理由だと思います。では、なぜ私のFoo_Readアクションが で実行されないのか教えてもらえますFooControllerか? ありがとう。

編集

関連するコントローラーコードを含めていますが、Visual Studio を内部で中断できるかどうかを確認するために単純化しましたFoo_Readが、ブレークポイントに到達しません。

関連する FooController.cs コード:

public class FooController : Controller
{
  private Entities db = new Entities();

  public ActionResult Foo_Read([DataSourceRequest] DataSourceRequest request)
  {
    return Json(request, JsonRequestBehavior.AllowGet);
  }
}
4

3 に答える 3

2

あなたの行動は不完全なようです。次のようなものではないでしょうか。

public ActionResult Foo_Read([DataSourceRequest] DataSourceRequest request)
  {
    return return Json(db.ToDataSourceResult(request));
  }

私の質問に対するあなたのコメントとあなた自身の質問を見た後、何かが私の頭の上でクリックされました.

あなたのソリューションでは、概念が混在しています。データソースを読み取りコントローラー アクションに定義し、BindTo メソッドを使用する必要がない場合。あなたのソリューションは、Read アクションが返すデータではなく、ViewData データにバインドしている可能性があります。そのため、正しく理解できれば、次のように「AutoBind(true)」を使用する必要があると思います。

@model IEnumerable<FooViewModel>
<script type="text/x-kendo-tmpl" id="template">
    <div class="Foo">        
        <h3>#:FooName#</h3>            
    </div>
</script>

<div class="FooList">
@(Html.Kendo().ListView<FooViewModel>(Model)
    .Name("listView")
    .TagName("div")
    .ClientTemplateId("template").AutoBind(true)    
    .DataSource(dataSource => 
    {
        dataSource.Read(read => read.Action("Foo_Read","Foo").Type(HttpVerbs.Get));
        dataSource.PageSize(15);        
    })
    .Pageable()
)
</div>

また、こちらをチェックして、役立つかどうかを確認してください。

于 2013-11-02T13:57:00.367 に答える
0

剣道の最新バージョンでは、 .AutoBind(true) を設定できます。その後、リストビューが初めて読み込まれたときに読み取りイベントが実行されます。

別の方法として、javascript から read メソッドを呼び出すこともできます。

$(document).ready(function () {
    var listView = $("#lstview").data("kendoListView");
    listView.dataSource.read();
});
于 2015-01-14T07:28:24.670 に答える