【发布时间】:2014-11-12 16:29:48
【问题描述】:
我正在创建一个门户/仪表板页面,允许用户在屏幕上多次放置相同的“小部件”。小部件可能包含一个 kendoUI 网格。此外,小部件可能包含其他控件,例如刷新网格时需要的复选框。但是,由于页面上有同一个小部件的多个实例,因此会调用同一个函数来获取其他数据。
我正在使用 MVC 助手来创建网格,例如:
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(100)
.Batch(true)
.ServerOperation(false) //client side sort
.Read(read => read.Action("AjaxGridRead", "TodaysTransferSnapin").Data("IncludeFutureTransfer("+ViewBag.snapinId+")"))
.Sort(sort => sort.Add(m => m.Bldg).Ascending())
)
但是,似乎没有向 TodaysTrasnferSnapin 传递任何参数来识别是哪个网格/数据源进行了该调用。
我试图传递网格名称(即使有多个实例,它在页面上也是唯一的)但是,导致函数运行,现在返回值只是一个静态对象。
我还尝试让 TodaysTransforSnapin 使用闭包返回一个函数来存储传递的值,如下所示:
function IncludeFutureTransfer(snapinid) {
return function() {
var snapin$ = $(".widget[data-snapin-id='" + snapinid + "']");
//this function is called/used by the "read" action of the kendo grid for todays Transfers.
return {
IncludeFuture: $("#cbFutureTransfer", snapin$).is(":checked"),
snapinId: snapinid
}
};
这似乎适用于初始网格绑定,但在那之后,它再次出错。它不调用该函数,但似乎尝试在返回中评估 jQuery 表达式,而不是在以后的 syncs() 中评估完整函数。
我在想我可能会以某种方式在 javascript 中添加 data() 函数,使用一个剃须刀创建的函数,该函数只是硬编码查询控件(复选框等)的 jQuery 范围,但我看不到这样做的方法.
我怎么知道是什么网格调用了附加数据函数?任何想法或建议表示赞赏。
【问题讨论】:
标签: kendo-ui kendo-grid