有谁知道Grid Ajax Read流畅API的“数据”部分是什么。
我问的原因是因为我的设置是这样的:
// razor setup
.Kendo()
.Grid<MyModel>()
.Name("KENDO_UI_GRID")
.DataSource(d =>
d.Ajax()
.Read(r => r
.Data("k_get_datafromform")
.Action("ResultsJson", "ControllerName")
)
.Events(e => e.RequestEnd("k_grid_requestend"))
.Events(e => e.Error("k_grid_error"))
.PageSize(Model.MaxItemsPerPage))
.Columns(// etc etc
// javascript function
function k_get_datafromform() {
var theFormFound = jQuery(".search-form:first");
if (theFormFound) {
// custom helper to convert form to object
return theFormFound.serializeObject();
};
return null;
}
但是当网格POST获取结果时,它不会随之发送数据。表单集合包含通常的剑道内容(页面大小等),但没有别的。我做错了什么???
答案 0 :(得分:2)
来自Telerik:
&#34; 这是已修复的第一个Service Pack发行版(2013.3.1316)中的已知问题。读取请求的附加数据未包含在序列化请求数据中,也未发送到服务器。请将您使用的版本更新到可从您的帐户下载的最新Service Pack(2013.3.1324)。对由此造成的不便表示歉心。&#34;
就是这样。
答案 1 :(得分:1)
当dataSource正在执行操作时,您正在使用Data函数向服务器发送addtional参数 - 在您的情况下是Read操作。
所以如果你从函数返回类似{foo:42}的东西。此参数等于42将发送到服务器。
在你的情况下,我假设serializeObject的结果不正确。
您可以尝试查看对象的外观并与我们分享吗?
您可以使用
alert(kendo.stringify(theFormFound.serializeObject()));
或
console.log(kendo.stringify(theFormFound.serializeObject())
进行调查
答案 2 :(得分:-1)
例如,这里有一个需要additionalData的DropdownList(左边的东西更清楚),你会注意到.data标签中的javascript函数“OnAdditionalData”
@(Html.Kendo().DropDownListFor(x => x.FromOpportunity)
.Name("OpportunityDDL")
.DataSource(source => {
source.Read(read =>
{
read.Action("SomeMethod", "SomeController")
.Data("OnAdditionalData");
})
)
和JS
function OnAdditionalData() {
var Item = 3
return {
partyItem: Item
};
}
因此,当数据被读取时,它说好了,转到SomeController中的SomeMethod并读取数据,但是说等等!我需要数据,我带给派对的是什么。它查看了JS函数并说好了我有一个值为3的partyItem。
public JsonResult SomeMethod(int partyItem)
{
// partyItem will == 3
}
注意控制器中的“partyItem”与函数中的“partyItem”同名,它们必须相同。请注意,如果您期望Controller中的字符串,它将无法工作。如果它是var Item = "3"
那么它会起作用。