2016-04-28 54 views
2

我想獲取數據並將該數據設置爲使用ajax的劍道網格的數據源。獲取錯誤消息e.slice不是一個功能,同時將數據源設置爲劍道網格

我正在從控制器正確獲取數據。但是,當我嘗試喲組數據源,以劍道電網它顯示我以下錯誤:

Uncaught TypeError: e.slice is not a function

$(function() { 
 
     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; 
 

 
     $.ajax({ 
 
      type: 'POST', 
 
      data: JSON.stringify({ statemenetInquiryParameter: statemenetInquiryParameter }), 
 
      contentType: 'application/json;', 
 
      dataType: 'json', 
 
      url: '@Url.Action("LoadCustomerStatementEnquiryDetails", "Stage")', 
 
      success: function (result) { 
 
       $('#gridCustomerCstTranDetailsManual').data('kendoGrid').dataSource.data(result); 
 
      } 
 
     }); 
 
    }
<div class="row" style="margin-top: 5px;"> 
 
        <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12"> 
 
         @(Html.Kendo().Grid<ServicePROWeb.ServiceProWCFService.CstTran>() 
 
          .Name("gridCustomerCstTranDetailsManual") 
 
          .Columns(columns => 
 
          { 
 
           columns.Bound(p => p.cst_inv_date).Title("Invoice Date").HtmlAttributes(new { @style = "text-align: right;" }).Format(Session["DisplayFormat_GridDate"].ToString()).Width(80); 
 
           columns.Bound(p => p.cst_type).Title("Type").Width(80); 
 
           columns.Bound(p => p.cst_ih_invno).Format("{0:n2}").HtmlAttributes(new { @style = "text-align: right;" }).Filterable(false).Title("Invoice Number").Width(80); 
 
           columns.Bound(p => p.cst_dr_amount).Format("{0:n2}").HtmlAttributes(new { @style = "text-align: right;" }).Filterable(false).Title("Debit").Width(80); 
 
           columns.Bound(p => p.cst_cr_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); 
 
          }) 
 
          .Selectable() 
 
          .Sortable() 
 
          .Scrollable() 
 
          .Resizable(resize => resize.Columns(true)) 
 
          .HtmlAttributes(new { style = "cursor:pointer;height:auto;width:auto;margin-top: 0px;" }) 
 
          .DataSource(dataSource => dataSource.Ajax()) 
 
         ) 
 
        </div> 
 
       </div>

public class StatemenetInquiryParameter 
{ 
    public decimal customerCode { get; set; } 
    public DateTime cst_stmt_from { get; set; } 
    public DateTime cst_stmt_to { get; set; } 
    public bool isPrintZero { get; set; } 
    public bool isPrintPayments { get; set; } 
    public bool isPrintAdjust { get; set; } 
} 

public JsonResult LoadCustomerStatementEnquiryDetails([DataSourceRequest]DataSourceRequest request, 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.ToDataSourceResult(request)); 
    } 

public class CstTran 
{ 
    public decimal cst_cm_code { get; set; } 
    public string cst_type { get; set; } 
    public DateTime cst_stmt_from { get; set; } 
    public int cst_ih_invno { get; set; } 
    public int cst_rcpt_no { get; set; } 
    public decimal cst_dr_amount { get; set; } 
    public decimal cst_cr_amount { get; set; } 
    public DateTime cst_inv_date { get; set; } 
    public DateTime cst_stmt_to { get; set; } 
    public decimal cst_dr_balance { get; set; } 
    public int cst_ih_acct_per { get; set; } 
    public int cst_lvl4_sequence { get; set; } 
} 

回答

1

此錯誤是由使用ToDataSourceResult()引起的。嘗試更新LoadCustomerStatementEnquiryDetails()方法如下圖所示:

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); 
} 

HIPE這有助於...

0

從剛纔所提供的代碼的目視檢查,我懷疑我們有這裏有兩件事。

首先:

.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}; 
} 

然後,這應該按照原來的方式傳遞對象。

希望這可以爲您提供一個可行的解決方案。

+0

謝謝您的回答。我有alreay做到這一點,[面對此](http://stackoverflow.com/questions/36904834/date-format-is-changing-while-fetching-data-using-kendo-grid)。請看一看。 –

相關問題