0

私のコントローラーは次のようになります:

        [HttpPost]
    public ActionResult Error_Search([DataSourceRequest] DataSourceRequest request, object[] ParaSearch)
    {
        object[] obj = new object[5];
        obj[0] = Convert.ToInt32(ParaSearch[0]);
        obj[1] = ParaSearch[1].ToString();
        obj[2] = Convert.ToDateTime(ParaSearch[2]).AddDays(-10);
        obj[3] = Convert.ToDateTime(ParaSearch[3]);
        obj[4] = ParaSearch[4];
        List<Vsoft.Lists.Model.SYS.SYS_Error> lst = new List<Vsoft.Lists.Model.SYS.SYS_Error>();
        ResultMessage result = new Vsoft.Lists.DALEntity.SYS.DAL_Error().SelectToList(ref lst, obj);
        return Json(lst.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
    }

それはJson(lst)正しいを返します..しかし、私はそれをデータソースにバインドして、次のようにAjax呼び出し後にグリッドを更新することはできません:

var requestData = { ParaSearch: arrObject };
    $.ajax({
        url: '@Url.Content("~/Error/Error_Search")',
            data: JSON.stringify(requestData),
            type: 'POST',
            traditional: true,
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            error: function (xhr) {
                result = false;
                alert('Error: ' + xhr.statusText);
            },
            success: function (lst) {
                 var grid = $("#Grid").data("kendoGrid");
                 grid.dataSource.data(lst);
                 grid.refresh();
            },
            async: true,
            processData: false,
            cache: false
        });

誰でもこれを解決するのを手伝ってもらえますか? 皆さんありがとう !

4

1 に答える 1

0

ajax リターンで十分な場合は、setDatasource api 呼び出しを使用することをお勧めします。

success: function (lst) {
                 var grid = $("#Grid").data("kendoGrid");
                 var dataSource = new kendo.data.DataSource({
                          data: lst });
                 grid.setDataSource(dataSource);                 
            }

EDIT : read を使用( read は単なるラッパーオーバー$.ajaxです) グリッドを次のように構成したことを願っています:

.DataSource(dataSource => dataSource
            .Ajax()
            .PageSize(20)
            .Read(read => read.Action("Error_Search", "Error", new { ParaSearch = []}))
         )

次に、発生元からいくつかのイベントを接続し、読み取り呼び出しを次のようParaSearchに使用します。

<script>
    function someEvent(e) {
        var requestData = { ParaSearch: arrObject };
        grid.dataSource.read(requestData);
    }
</script>
于 2013-11-07T04:35:40.263 に答える