2014-02-21 62 views
0

我必须绑定按钮点击剑道电网,并获得例如在另一个SO问题:Kendo Grid - Bind Data After Search,但是这不是为我工作。我的控制器操作正在返回json对象,但该对象没有被映射到我的网格。如何绑定剑道网格上的按钮单击事件

以下是其他问题提出了相同的代码:

@(Html.Kendo().Grid<Project.Data.Entity.SearchResult>() 
    .Name("ClaimantSearch") 
    .DataSource(dataSource => dataSource 
     .Ajax() 
    //.Read(read => read.Action("Search", "Claimant"))) 
    .Columns(columns => 
    { 
    columns.Bound(x => x.Name); 
    columns.Bound(x => x.Authorized); 
    columns.Bound(x => x.CompanyName); 
    columns.Bound(x => x.Address); 
    }) 
    .Resizable(resizing => resizing.Columns(true)) 
) 

的Javascript:

$('#btnSearch').click(function() { 
    alert('a'); 
    $.ajax({ 
     data: '@Url.Action("Search", "Claimant")', 
     type: 'POST', 
     contentType: "application/json;charset=utf-8", 
     data: "", 
     dataType: "json", 
     success: function (data) { 
      alert(data); 
      var grid = $('#Claimant').getKendoGrid(); 
      grid.dataSource.data(result); 
      grid.refresh(); 
     } 
    }); 
    return false; 
}); 
+0

您是否检查控制台是否有错误? –

+0

不会引发任何错误 – Divya

+0

将是巨大的,如果你能共享代码。 –

回答

0

这个替换您的成功回调:

success: function (result) { 
    alert(result); 
    var grid = $('#Claimant').getKendoGrid(); 
    grid.dataSource.data(result); 
    grid.refresh(); 
} 

的问题是根本重命名的函数参数data,但你仍然试图绑定result。将其更改回result,它应该可以工作。

另外,我注意到你在你的AJAX呼叫的两个data属性,可能要删除的空白之一。

0

您可以添加.AutoBind(假)

@(Html.Kendo().Grid<Project.Data.Entity.SearchResult>() 
    .Name("ClaimantSearch") 
    .AutoBind(false) 
    .DataSource(dataSource => dataSource 
    .Ajax() 
    .Read(read => read.Action("Search", "Claimant"))) 
    .Columns(columns => 
{ 
columns.Bound(x => x.Name); 
columns.Bound(x => x.Authorized); 
columns.Bound(x => x.CompanyName); 
columns.Bound(x => x.Address); 
}) 
.Resizable(resizing => resizing.Columns(true)) 
) 

<input type="button" value="Generate" id="btnGenerate" /> 

您可以添加$( “#ClaimantSearch”)的数据( “kendoGrid”)dataSource.read()。 jQuery的按钮单击事件

<script> 
$('#btnGenerate').click(function() { 
    $("#ClaimantSearch").data("kendoGrid").dataSource.read(); 
}); 
</script> 
0

为了从查看到控制器。资料传递参数(“additionalInfo”)添加到网格的.DataSource

ASP.NET MVC的.Read财产解决方案

@(Html.Kendo().Grid<Your_Model>() 
    .Name("grd_yourGrid") 
    .AutoBind(false) 
    .Columns(columns => 
    { 
     columns.Bound(c => c.modelAttribute).Width(300); 
    }) 
    .HtmlAttributes(new { style = "height: 500px;" }) 
    .Scrollable() 
    .Pageable(pageable => pageable 
     .Refresh(true) 
     .PageSizes((new int[] { 5, 10, 20, 50, 100, 200 }).ToList()) 
     .ButtonCount(15)) 
    .DataSource(dataSource => dataSource 
      .Ajax().ServerOperation(false) 
      .Read(read => read.Action("MyActionName", "MyController").Data("additionalInfo")) 
     .PageSize(100) 
    )) 

的Javascript:

<script> 

     $('#btn_yourButtonName').click(function() { 

      $("#grd_yourGrid").data("kendoGrid").dataSource.read(); 

      return false; // WITHOUT THIS GRID WILL NOT BE FILLED 
     }); 


     function additionalInfo() { 
      return { 
       startRange: $("#inputValueOne").data("kendoNumericTextBox").value(), 
       endRange: $("#inputValueTwo").data("kendoNumericTextBox").value() 
      } 
     } 
</script> 

控制器(MyController):

[HttpPost] 
public ActionResult MyActionName([DataSourceRequest]DataSourceRequest request, string startRange, string endRange){} 
相关问题