17 asp.net asp.net-mvc kendo-ui kendo-grid kendo-asp.net-mvc
我有一个kendo Grid如下.
@(Html.Kendo().Grid<RevenueModel>()
     .Name("WeeklyRevenue")
     .Resizable(resizing => resizing.Columns(true))
     .Columns(columns =>
         {
            columns.Bound(p => p.Number).Width(100);
            columns.Bound(p => p.Type).Width(100);
            columns.Bound(p => p.Week1).Format("{0:c}");
            columns.Bound(p => p.Week2).Format("{0:c}");
            columns.Bound(p => p.Week3).Format("{0:c}");
            columns.Bound(p => p.Week4).Format("{0:c}");
            columns.Bound(p => p.Week5).Format("{0:c}");
            columns.Bound(p => p.TotalRevenue).Format("{0:c}");
         })
     .Scrollable()
     .Events(events => events.Change("onChange").DataBound("onDataBound"))
     .DataSource(dataSource => dataSource.Ajax().Read(read => read.Action("WeeklyRevenue", "Home")).ServerOperation(false))
     .Pageable(pager => pager.Refresh(true))
 )
这是我的控制器代码
public ActionResult WeeklyRevenue([DataSourceRequest]DataSourceRequest request)
        {
            ...
            DataSourceResult result = res.ToDataSourceResult(request);
            return Json(result, JsonRequestBehavior.AllowGet);
        }
它工作正常.但是我想在Grid读取数据时发送更多数据,如下所示;
public ActionResult WeeklyRevenue([DataSourceRequest]DataSourceRequest request, string AdditionalParam)
我找不到任何解决方法如何做到这一点.提前致谢.
Ata*_*hev 25
如果在服务器端知道附加数据,则应使用接受路由值的Action方法的重载:
.DataSource(dataSource => dataSource.Server()
   .Read(read => read.Action("Read", "Home", 
        new { AdditionalParam = ViewData["AdditionalParam"] }))
)
如果在客户端已知此附加数据,则应使用Data方法:
.DataSource(dataSource => dataSource.Ajax()
   .Read(read => read
      .Action("Read", "Home")
      .Data("additionalData")
  )
)
<script>
 function additionalData() {
     return {
         AdditionalParam: $("#search").val()
     };
 }
</script>
Mah*_*hib 17
你可以试试这个;
.Read(read => read.Action("WeeklyRevenue", "Home", new { AdditionalParam = "Test" }))
或者通过JavaScript功能;
.Read(read => read.Action("Products_Read", "Grid").Data("additionalInfo"))
function additionalInfo() {
    return {
        AdditionalParam : "test"
    }
}
或完整的JavaScript;
transport: {
    read: {
      url: "/Home/WeeklyRevenue",
      type: "POST",
      contentType: "application/json",
      dataType: "json",
      data: {
        AdditionalParam : "Test" 
      }
    }
  }
如果使用parameterMap,请确保如下字符串化:
parameterMap: function (data, operation) {
                    if (operation != "read") {
                        return kendo.stringify(data.models);
                    }
                    else if (operation === "read") {
                        return kendo.stringify(data);
                    }
                }
在控制器这样的事情
public ActionResult Products_Read([DataSourceRequest] DataSourceRequest request, string AdditionalParam) {...}
我们可以使用下面给出的选项来传递其他参数。
//object route values
Read(read => read.Action("vs_Read", "vs", new{id=33})
//js function name
Read(read => read.Action("vs_Read", "vs").Data("passAdParam")
//By Template Delegate
Read(read => read.Action("Aggregates_Read", "Grid").Data(@<text>
            function() {
                //pass parameters to the Read method
                return {
                    name: "test",
                    id: $("#search").val()
                }
            }
              </text>))
| 归档时间: | 
 | 
| 查看次数: | 33045 次 | 
| 最近记录: |