这当然是可能的。不过,您需要更加熟悉 jQuery。看起来您已经掌握了 Kendo Grid 事件,所以我不会在这里讨论这个问题。这是诀窍(之一)......
在这种情况下,Kendo Grid 被用作一个花哨的多选,每次选择一个新的州(即 TX,NY)时,都会在调用此函数的网格中触发一个事件。这比你要求的要多,所以我会解释。它正在这样做:
- 添加网格中的多选项目列表并将此列表分配给隐藏的表单字段。
- 使用 Ajax 发布在表单中使用此信息和其他信息更新数据库(传递整个表单)。2b。注意'async: false',这让数据库在下一次 Ajax 调用之前更新。
- 另一个使用所有表单字段再次查询数据库的 Ajax 帖子。
两个 Ajax 调用都访问 MVC 控制器方法,这些方法与数据库通信并返回部分视图以一次更新页面的两个单独部分。这些可以是任何东西,在这种情况下,它们都是额外的剑道网格,但选项卡式面板同样简单。
function updateParts() {
var grid = $('#States').data('kendoGrid');
var rows = grid.select();
$('#StatesQuery').val('');
rows.each(
function () {
var record = grid.dataItem($(this));
$('#StatesQuery').val($('#StatesQuery').val() + record.StateCode + ",");
}
);
$.ajax({
url: '@Url.Action("UpdateSomething", "Controller")',
type: 'post',
data: $('form#ajaxSearchForm').serialize(),
async: false,
success: function (result) {
$('#SomethingElseDiv').html(result);
}
});
$.ajax({
url: '@Url.Action("QuerySomething", "Controller")',
type: 'post',
data: $('form#ajaxSearchForm').serialize(),
success: function (result) {
$('#SearchResultsDiv').html(result);
}
});
}
控制器方法
[HttpPost]
public ActionResult QuerySomthing(FormCollection formCollection)
{
var query = new Status(); // Complext Data Model for Search
query.States = formCollection["StatesQuery"].Split(',');
... etc
var model = new SearchViewModel(); // ViewModel for Partial
model.StatusSummaries = _submissionsDataProvider.DoQuery(query);
return View("SearchResults", model);
}
我希望你和我一样喜欢 Kendo 和 MVC!