我正在使用一个kendo multiselect小部件供用户选择通过ajax调用从数据库中提取的不同值。 ajax调用需要一个参数searchValue,它将缩小返回的数据范围。这是我的控制器:
[HttpPost]
public JsonResult ProfitabilitySearch(string searchValue)
{
return Json(InventoryDataAccess.ProfitabilitySearch(searchValue));
}
1)如何从文本框中获取值作为searchValue?我评论了下面的问题。 这是我的dataSource:
var searchDataSource = new kendo.data.DataSource({
transport: {
read: function () {
$.ajax({
type: 'POST',
url: Firm.ProfitabilitySearchURL,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
//'SuperClient' is test data to see if it works, but what do i
//need to make searchValue = what I type?
data: JSON.stringify({ searchValue: 'SuperClient'}),
success: function (data) {
return data.RESULT;
}
});
}
},
group: { field: 'category' },
serverFiltering: true
});
这是我创建多选小部件的地方:
var TKSearch = $("#TKSearch").kendoMultiSelect({
dataSource: searchDataSource,
autoBind: false,
minLength: 3,
placeholder: 'Search Timekeepers...',
dataTextField: 'label',
dataTextValue: 'value',
delay: 200
}).data("kendoMultiSelect");
我不确定这是否会有所帮助,但这是从ajax调用返回的json的结构:
{"label":"SUNFLOWER REALTY CORP. (023932)","value":"023932","category":"RC"}
解决上面的第一个问题可能会回答我的第二个问题,所以我会等到那之后再问。
答案 0 :(得分:0)
您可以将函数用于请求参数。
var searchDataSource = new kendo.data.DataSource({
transport: {
read: function (options) {
$.ajax({
type: 'POST',
url: Firm.ProfitabilitySearchURL,
contentType: 'application/json; charset=utf-8',
data: {
searchValue: function () {
// better: use a model property instead of this
return $("#TKSearch").data('kendoMaskedTextBox').value();
}
},
success: function (data) {
options.success(data.RESULT);
}
});
}
},
group: { field: 'category' },
serverFiltering: true
});
注释
JSON.stringify()
。 jQuery透明地做到了。dataType
是完全多余的,jQuery会从响应标头中解决这个问题。options.success()
)