15

我在页面上有一个日期选择器和一个网格。我希望根据日期选择器中的日期填充网格。我已经使用 grid.dataBind 使用 Telerik mvc 网格完成了这项工作。

var grid = $('#Grid').data('tGrid');
var pDate = document.getElementById('DatePicker').value;
$.ajax(
{
  type: 'POST',
  url: '/Home/AccountSummary/',
  dataType: 'json',
  data: { date: pDate },
  success: function (result) {
    grid.dataBind(result);
  }
});

现在我想做同样的事情,除了 Kendoui 网格。我知道我需要使用$('#Grid').data('kendoGrid'). 但是如何将结果绑定到网格?

4

4 回答 4

22

假设结果变量包含一个 javascript 对象数组,并且它包含与原始标记相同的列数的数据。

IE。result = [{"AccountId":1,"Name":"AAA"},{"AccountId":2,"Name":"BBB"}];

尝试以下操作:

$.ajax(
{
    type: 'POST',
    url: '/Home/AccountSummary/',
    dataType: 'json',
    data: { date: pDate },
    success: function (result) {
        $("#Grid").data("kendoGrid").dataSource.data(result);
    }
});
于 2012-06-28T18:51:40.327 回答
10

你也可以这样做:

var dataSource = new kendo.data.DataSource({
    transport: {
        read: function(options) {
            $.ajax({
                type: "POST",
                url: "Controller/Handler",
                contentType: "application/json; charset=utf-8",
                dataType: 'json',
                data: JSON.stringify({key: "value"}),
                success: function(data) {
                    options.success(data);
                }
            });
        }
    }
});

然后将其绑定到网格:

var grid = $("#grid").kendoGrid({
    dataSource: dataSource
}

这样,您可以将其余的 CRUD 操作添加到您的传输中,并且您将所有代码放在一个地方。

于 2014-01-03T23:50:25.257 回答
4

您可以将 Json 结果绑定到网格。如果需要,您也可以传递模型。例如,请参见下面的代码片段。

有关更多详细信息,请参见此处

$('#FindBtn').click(function (e) {
    e.preventDefault();
    var UserDetails =
    {
        "FirstName": document.getElementById('FirstName').value,
        "LastName": document.getElementById('LastName').value,
    };
    $.ajax({
        url: "SearchJsonRequest",
        type: 'POST',
        contentType: "application/json;charset=utf-8",
        data: JSON.stringify(UserDetails),
        dataType: "json",
        success: function (data) {
            var grid = $('#AssociateSearch').getKendoGrid();
            grid.dataSource.data(data);
            grid.refresh();
        }
    });
    return false;
});
于 2014-12-12T18:20:53.220 回答
0

延伸到 Igorrious ......那个确切的答案对我没有帮助,但它让我找到了答案。

什么对我有用:

$.ajax(
  {
    type: 'POST',
    url: '/Controller/Action',
    data: {
      paramKey: paramValue
    },
    success: function (result) {
      $("#my-grid").data("tGrid").dataBind(result);
    }
}); 

如果这对您没有帮助,请进行一些 javascript 调试以找出为什么链中的某些元素[$("#my-grid")] . [data("tGrid")] . [dataBind]具有value == 'undefined'.

于 2014-02-04T13:52:35.430 回答