我将KendoUI Dropdownlist放在Kendo Grid中,我可以使用下面的代码在下拉列表中设置更改事件
function onDropDownChanged(e) {
var text = $("#TestMethodId").data("kendoDropDownList").value();
alert(text);
}
使用上面的代码 1.我如何能够像'ViewBag.Test'一样访问ViewBag内容? 2.我需要遍历ViewBag中的值,并将网格中的一个textbox属性设置为该viewbag中的值。
答案 0 :(得分:2)
简短的回答是:你不能。您正在尝试将客户端处理与服务器端处理混合使用。这根本不可能。
onDropDownChanged
函数将在用户执行操作后执行。这意味着Razor引擎已经解析了.cshtml
文件并将HTML代码发送到客户端。这反过来意味着任何包含ViewBag
对象的指令都已被执行。
现在,我真的不知道你的ViewBag
包含什么。因此,我假设您已经存储了一些string
s(值),并且属性名称存储为dropdownlist
中的选项。您可能希望根据您在ViewBag
中选择的内容访问dropdownlist
中的数据。在这种情况下,您应该执行以下操作:
dropdownlist
的值和值,无论您需要什么;将此词典保存在ViewBag
onDropDownChanged
事件中,只需使用选择text
访问此对象即可获得所需的值。你的问题有点模糊,因此我不能100%确定这是你需要的。最重要的是,你不能以这种方式混合服务器端和客户端代码。你需要依靠技巧。
编辑:
这是一个可以帮助你的技巧。在您的视图中,序列化ViewBag
并将值保存为JavaScript变量;将文本解析为对象;你现在可以使用JavaScript迭代它。
<script>
var tmpViewBag = '@Html.Raw(Json.Encode(ViewBag.MyObject))'; //notice I'm using ' and not "
var myOptions = [];
$(document).ready(function() {
myOptions = JSON.parse(tmpViewBag); //you now have the object array
})
</script>
在select事件中,您现在可以使用对象数组,如下所示:
function onDropDownChanged(e) {
var text = $("#TestMethodId").data("kendoDropDownList").value();
//alert(text);
for (var i = 0; i < myOptions.length; i++) {
if (myOptions.TestName === text) { //it can as well be ".TestId"
$("#mytextbox").value(myOptions.PassThreshold); //you can set whatever you want
break;
}
}
}