Kendo ui 将数据源设置为剑道网格时,获取错误消息e.slice不是一个函数

Kendo ui 将数据源设置为剑道网格时,获取错误消息e.slice不是一个函数,kendo-ui,kendo-grid,kendo-asp.net-mvc,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,我正在尝试获取数据,并使用ajax将该数据设置为剑道网格的数据源 我正在正确地从控制器获取数据。但当我尝试将数据源设置为剑道网格时,它会显示以下错误: 未捕获类型错误:e.slice不是函数 $(函数(){ loadCstDetails(); }); 函数loadCstDetails(){ var stateMenetquiryParameter={}; StateMenetQuiryParameter.isPrintZero=true; StateMenetQuiryParameter.is

我正在尝试获取数据,并使用ajax将该数据设置为剑道网格的数据源

我正在正确地从控制器获取数据。但当我尝试将数据源设置为剑道网格时,它会显示以下错误:

未捕获类型错误:e.slice不是函数

$(函数(){
loadCstDetails();
});
函数loadCstDetails(){
var stateMenetquiryParameter={};
StateMenetQuiryParameter.isPrintZero=true;
StateMenetQuiryParameter.isPrintPayments=true;
StateMenetQuiryParameter.isPrintAdjust=true;
StateMenetquiryParameter.cst_stmt_from=新日期(“2016年4月1日”);
StateMenetquiryParameter.cst_stmt_to=新日期(“2016年4月12日”);
StateMenetQuiryParameter.customerCode=007;
$.ajax({
键入:“POST”,
数据:JSON.stringify({stateMenetquiryParameter:stateMenetquiryParameter}),
contentType:'应用程序/json;',
数据类型:“json”,
url:'@url.Action(“LoadCustomerStatementQueryDetails”,“Stage”),
成功:功能(结果){
$('#gridCustomerCstTranDetailsManual').data('kendoGrid').dataSource.data(结果);
}
});
}

@(Html.Kendo().Grid())
.Name(“gridCustomerCstTranDetailsManual”)
.列(列=>
{
columns.Bound(p=>p.cst_inv_date).Title(“发票日期”).HtmlAttributes(新的{@style=“text align:right;”“}).Format(会话[“DisplayFormat_GridDate”].ToString()).Width(80);
列。绑定(p=>p.cst_类型)。标题(“类型”)。宽度(80);
columns.Bound(p=>p.cst_ih_invno).Format(“{0:n2}”).HtmlAttributes(new{@style=“text align:right;”“}).Filterable(false).Title(“发票号”).Width(80);
columns.Bound(p=>p.cst_dru amount).Format(“{0:n2}”).HtmlAttributes(new{@style=“text align:right;”“}).Filterable(false).Title(“Debit”).Width(80);
columns.Bound(p=>p.cst_cru amount).Format(“{0:n2}”).HtmlAttributes(new{@style=“text align:right;”“}).Filterable(false).Title(“Credit”).Width(80);
columns.Bound(p=>p.cst_dr_balance).Format(“{0:n2}”).HtmlAttributes(new{@style=“text align:right;”“}).Filterable(false).Title(“balance”).Width(80);
})
.可选()
.Sortable()
.Scrollable()
.resize可调整大小(resize=>resize.Columns(true))
.HtmlAttributes(新{style=“光标:指针;高度:自动;宽度:自动;页边距顶部:0px;”})
.DataSource(DataSource=>DataSource.Ajax())
)

仅从提供的代码的外观检查来看,我怀疑我们这里有两件事

首先:

.DataSource(dataSource => dataSource.Ajax())
如果要定义“远程”数据源,则需要为该命令提供一个读取操作,或将其绑定到一个集合(根据我的经验),这可能是导致您遇到错误的原因

除此之外,您似乎正在编写网格声明可以为您完成的代码

如果您希望将一些参数发送给控制器,那么我建议您按如下方式更改代码:

    .DataSource(dataSource => {
                dataSource.Ajax()
                .Read(read => {
                 read.Action("LoadCustomerStatementEnquiryDetails", "Stage").Data("loadCstDetails");
                              })
然后将现有loadCstDetails函数更改为:

function loadCstDetails() {

        var statemenetInquiryParameter = {};

        statemenetInquiryParameter.isPrintZero = true;
        statemenetInquiryParameter.isPrintPayments = true;
        statemenetInquiryParameter.isPrintAdjust = true;
        statemenetInquiryParameter.cst_stmt_from = new Date("April 01, 2016");
        statemenetInquiryParameter.cst_stmt_to = new Date("April 12, 2016");
        statemenetInquiryParameter.customerCode = 007;
   return {statemenetInquiryParameter: statemenetInquiryParameter};
}
然后,这应该像最初一样传递对象


希望这能为您提供一个有效的解决方案。

此错误是由使用
ToDataSourceResult()
引起的。尝试更新
LoadCustomerStatementInquiryDetails()
方法,如下所示:

public JsonResult LoadCustomerStatementEnquiryDetails(StatemenetInquiryParameter statemenetInquiryParameter)
{
    List<CstTran> l = new List<CstTran>();

    for (int i = 0; i < 12; i++)
    {
        CstTran c = new CstTran();

        c.cst_inv_date = statemenetInquiryParameter.cst_stmt_from.AddDays(i);
        c.cst_type = "I";
        c.cst_ih_invno = i + 1;
        c.cst_dr_amount = i;
        c.cst_cr_amount = 0;
        c.cst_dr_balance = c.cst_dr_balance + i;

        l.Add(c);
    }
    return Json(l, JsonRequestBehavior.AllowGet);
}
public JsonResult Loader CustomerStatementQueryDetails(StateMenetQuiryParameter StateMenetQuiryParameter)
{
列表l=新列表();
对于(int i=0;i<12;i++)
{
CSTRAN c=新CSTRAN();
c、 cst_inv_date=statemenetInquiryParameter.cst_stmt_from.AddDays(i);
c、 cst_type=“I”;
c、 cst_ih_invno=i+1;
c、 cst_dr_金额=i;
c、 cst_cr_金额=0;
c、 cst_dr_balance=c.cst_dr_balance+i;
l、 添加(c);
}
返回Json(l,JsonRequestBehavior.AllowGet);
}

Hıpe这有助于…

谢谢你的回答。我已经做过了,而且也做过了。请看一看。