Kendo ui 如何配置剑道网格数据源以使用parameterMap功能?
我有一个Kendo ui 如何配置剑道网格数据源以使用parameterMap功能?,kendo-ui,Kendo Ui,我有一个剑道网格,我想向我的控制器动作传递一个参数。我能够成功地使用transports read.data,但我正在尝试学习如何使用parameterMap功能 以下是我的作品: <script> $(document).ready(function () { var employeeNumber = @(ViewBag.EmployeeNumber); //passed in from controller $("#ShoppingCartGrid").kend
剑道
网格,我想向我的控制器动作
传递一个参数。我能够成功地使用transports read.data,但我正在尝试学习如何使用parameterMap功能
以下是我的作品:
<script>
$(document).ready(function () {
var employeeNumber = @(ViewBag.EmployeeNumber); //passed in from controller
$("#ShoppingCartGrid").kendoGrid({
dataSource: {
dataType: "json",
type:"GET",
transport: {
read: {
url:"../Requisitions/GetShoppingCartSummary/",
data: {
employeeNumber:employeeNumber //passing param this way works
},
}
},
schema: {
...... //omitted for brevity
</script>
<script>
$(document).ready(function () {
var employeeNumber = @(ViewBag.EmployeeNumber);
$("#ShoppingCartGrid").kendoGrid({
dataSource: {
dataType: "json",
type:"GET",
transport: {
read: {
url:"../Requisitions/GetShoppingCartSummary/"
},
parameterMap:function(options,operation){
if (operation == "read") {
return{
employeeNumber:employeeNumber
};
};
} //parameterMap
}, //transport
schema: {
....Omitted for Brevity
</script>
$(文档).ready(函数(){
var employeeNumber=@(ViewBag.employeeNumber);//从控制器传入
$(“#ShoppingCartGrid”).kendoGrid({
数据源:{
数据类型:“json”,
键入:“获取”,
运输:{
阅读:{
url:“../requisions/GetShoppingCartSummary/”,
数据:{
employeeNumber:employeeNumber//以这种方式传递参数有效
},
}
},
架构:{
……为简洁起见,略去
下面是不起作用的,但我不知道我应该在这里写什么:
<script>
$(document).ready(function () {
var employeeNumber = @(ViewBag.EmployeeNumber);
$("#ShoppingCartGrid").kendoGrid({
dataSource: {
dataType: "json",
type:"GET",
transport: {
read: {
url:"../Requisitions/GetShoppingCartSummary/"
},
parameterMap:function(options,operation){ // here is where I'm
if (operation == "read") { // running into issues- even
return employeeNumber:"140412"; // hard coding param- no joy
}
};
},
schema: {
...... //omitted for brevity
</script>
$(文档).ready(函数(){
var employeeNumber=@(ViewBag.employeeNumber);
$(“#ShoppingCartGrid”).kendoGrid({
数据源:{
数据类型:“json”,
键入:“获取”,
运输:{
阅读:{
url:“../requisions/GetShoppingCartSummary/”
},
parameterMap:function(options,operation){//这里是我的位置
如果(操作==“读取”){//遇到问题-偶数
return employeeNumber:“140412”//硬编码参数-无欢乐
}
};
},
模式:{
……为简洁起见,略去
我已经寻找了几个小时的解决方案,但我似乎找不到一篇足够好的帖子来解释这个概念。请不要发送到剑道文档的链接,在那里,有精神创伤来证明它。谢谢你的任何建议。好的,我找到了。我不得不将返回声明放在花括号中 以下是我最后得出的有效结论:
<script>
$(document).ready(function () {
var employeeNumber = @(ViewBag.EmployeeNumber); //passed in from controller
$("#ShoppingCartGrid").kendoGrid({
dataSource: {
dataType: "json",
type:"GET",
transport: {
read: {
url:"../Requisitions/GetShoppingCartSummary/",
data: {
employeeNumber:employeeNumber //passing param this way works
},
}
},
schema: {
...... //omitted for brevity
</script>
<script>
$(document).ready(function () {
var employeeNumber = @(ViewBag.EmployeeNumber);
$("#ShoppingCartGrid").kendoGrid({
dataSource: {
dataType: "json",
type:"GET",
transport: {
read: {
url:"../Requisitions/GetShoppingCartSummary/"
},
parameterMap:function(options,operation){
if (operation == "read") {
return{
employeeNumber:employeeNumber
};
};
} //parameterMap
}, //transport
schema: {
....Omitted for Brevity
</script>
$(文档).ready(函数(){
var employeeNumber=@(ViewBag.employeeNumber);
$(“#ShoppingCartGrid”).kendoGrid({
数据源:{
数据类型:“json”,
键入:“获取”,
运输:{
阅读:{
url:“../requisions/GetShoppingCartSummary/”
},
parameterMap:功能(选项、操作){
如果(操作==“读取”){
返回{
雇员编号:雇员编号
};
};
}//参数映射
},//运输
模式:{
…为简洁起见省略
我仍然想找出一些其他的选项,比如如何构建一个可选参数数组,然后返回数组。但这就是我所问问题的答案。希望它能帮助其他人。您的传输数据类型是Json,因此您需要返回有效的Json参数。Kendo附加了param中提供的函数结果映射到您在url中定义的方法名称 在您的示例中-employeeNumber:“140412”不是有效的Json,您需要提供以下格式的parmas{paramname:value,otherparamname:value} 使用JSON.stringify(o)来获得正确的参数非常方便 以下parameterMap的结构适用于我:
parameterMap: function (o, operation) {
var output = null;
switch (operation) {
case "create":
output = '{ id: ' + JSON.stringify(o) + ' }';
break;
case "read":
output = '{ id: ' + globalVariable + ' , filters: ' + JSON.stringify(o) + '}';
break;
case "update":
output = '{ id:' + JSON.stringify(o) + '}';
break;
case "destroy":
output = '{ id : ' + o.param+ ' }';
break;
}
return output;
}
请根据您的评论提供更多详细信息:
parameterMap: function (o, operation) {
var output = null;
switch (operation) {
case "read":
var txt1 = $('#myTextBox1').val();
var txt2 = $('#myTextBox2').val();
var txt3 = $('#myTextBox3').val();
output = '{ textBoxValue1: ' + txt1 + ', textBoxValue2: ' + txt2 + ',textBoxValue3: ' + txt3 + '}';
break;
}
return output;
}
服务器端方法签名应如下所示:
GetShoppingCartSummary(string textBoxValue1, string textBoxValue2, textBoxValue3);
谢谢你的回复。如果你的评论是针对我的原始帖子的,那么好吧,但是使用我在回答中发布的parameterMap功能确实有效。我仍然对parameterMap感到困惑,并想了解更多。你知道我可以看的在线真实世界的例子吗?剑道文档几乎一文不值。我特别希望从未绑定表单向控制器传递多个可选参数。保持简单,我有三个文本框,用户可以在其中一个或全部输入搜索条件,然后我将这些值传递给控制器。Thnaks。我的示例是从真实世界复制和粘贴示例,其中包含一些调整,以涵盖其他用例。GlobalVaria在我的示例中,ble指的是诸如您的文本框场景之类的情况,我用一些与文本框相关的示例扩展了我的答案,希望能有所帮助。谢谢!您上次的编辑对我来说很有意义。还有一件事,传入的参数“o”是什么意思在你的第一个例子中的parameterMap函数表示?如果我猜frpm我读到了什么,它将是当前表单上所有成功输入字段的集合。再次感谢你的时间。o aka选项,真正的剑道名称是数据可以包含你需要调用服务器的所有内容,我记得你不喜欢剑道文档t在此处()查看完整列表。在读取的情况下,您将在用于筛选、分页和排序的数据参数值中找到,在其他情况下,您将获得id。id是指您在datasource.schema.model中定义的id列。