2016-10-12 10 views
1

私は剣道UIグリッドでasp.net MVCに取り組んでいます。 メソッドから情報を取得してグリッドに渡しています。私はツールバーにdatepickerを持っているので、新しい日付を選択すると、コードがメソッドのrefilter LINQに行き、新しいリストを受け取ります。剣道UIを持つASP.NET MVCでe.sliceが関数エラーではありません

私はこのコードを書いた:

public ActionResult Grid_ReadLogAdminList([DataSourceRequest] DataSourceRequest request,[Bind(Prefix = "id")] string date) 
     { 

//both the date and result is correct always 
      var jsonResult = Json(result, JsonRequestBehavior.AllowGet); 
      jsonResult.MaxJsonLength = int.MaxValue; 
      return jsonResult; 

     } 

、ここでは、私は日付ピッカーを変更するJavaScriptです:

function filterDate() 
    { 
$("#LogAdminGrid").kendoGrid({ 
      dataSource: { 
       transport: { 
        read: { 
         url: '/LogAdmin/Grid_ReadLogAdminList/', 
         type: 'get', 
         dataType: 'json', 
         data: { 
          id: kendo.toString($("#datepicker").data("kendoDatePicker").value(), "dd.MM.yyyy") 
         } 
        } 
       } 
      } 
     }); 
} 

すべてが正しいと私は正しくメソッドにアクセスすることができます。しかし、フィルターの後のメソッドの復帰後、私はエラーを受け取ります:

kendo.all.js:6599 Uncaught TypeError: e.slice is not a function

私はなぜそれを解決するのか分かりません。あなたが私を助けてくれたらどうか?

+0

このe.sliceを含むコードまたは完全なエラー –

+1

これは完全なエラーであり、コードはKendo.allライブラリから来たものです。私はこの機能を使用しておらず、また書きました –

+0

結果オブジェクトは何ですか?それが何らかの記述のコレクションであれば、これを '.ToDataSourceResult()'として返すことを確実にしてください。実際にはグリッドに戻されるのは何ですか? –

答えて

1

剣道のMVCグリッドを使用しているので、私は以下の方法に従うことをお勧めします。

ビュー

@(Html.Kendo().Grid<WebApplication2.Models.Product>() 
      .Name("grid") 
      .Columns(columns => 
      { 
       columns.Bound(product => product.ProductID); 
       columns.Bound(product => product.ProductName); 
      }) 
      .Pageable() 
      .Sortable() 
      .DataSource(dataSource => dataSource 
          .Ajax() 
          .Model(model => 
          { 
           model.Id(x => x.ProductID); 
          }) 
          .Read(read => read.Action("Grid_Read", "Home").Data("gridParam")) 
      ) 
) 

<input id="txtID" type="text" value="1" /> 
<input type="button" value="filterGrid" onclick="filterGrid();" /> 

<script> 
    function gridParam() { 
     return { 
      ID: $("#txtID").val() 
     } 
    } 
    function filterGrid() { 
     $("#grid").data("kendoGrid").dataSource.read(); 
     $("#grid").data("kendoGrid").refresh(); 
    } 

</script> 

コントローラ

public ActionResult Grid_Read([DataSourceRequest]DataSourceRequest request, int? ID) 
{ 
    List<Product> lst = new List<Product>(); 
    lst.Add(new Product() { ProductID = 1, ProductName = "aaa" }); 
    lst.Add(new Product() { ProductID = 2, ProductName = "bbb" }); 
    lst.Add(new Product() { ProductID = 3, ProductName = "ccc" }); 
    if (ID.HasValue) 
     lst = lst.Where(i => i.ProductID == ID.GetValueOrDefault()).ToList(); 
    return Json(lst.ToDataSourceResult(request), JsonRequestBehavior.AllowGet); 
} 

モーダル

public class Product 
    { 
     public int ProductID { get; set; } 
     public string ProductName { get; set; } 
    } 

エラー「電子の根本的な原因。スライスは関数ではありません "というのは、配列を剣道グリッドにバインドするのではなく、バインディングオブジェクトです。

+0

素晴らしいですが、私はこれで二日間過ごします。私は解決策を見つけることができませんでした。 問題は、間違った方法でパラメータを渡すことでした –

関連する問題