1

我们一直在努力将值传递给以下模板:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyCuteWeb.Areas.Admin.Models.DisplayType>" %>

<%= Html.Kendo()
.DropDownList()
.Name(ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty))
.DataTextField("Name")
.DataValueField("Value")
.DataSource(source => 
{ 
    source.Read(read => 
        read.Action("GetSelectedProperties",
            "UserQueryTypes", 
            new { id="3F2504E0-4F89-11D3-9A0C-0305E82C3301" })); 
})

%>

此模板调用AJAX服务以获取可能的下拉值列表,但该AJAX服务必须接受一个参数,该参数将从Kendo GridView. 我们不确定如何传递这个参数。

"3F2504E0-4F89-11D3-9A0C-0305E82C3301"从一个单元格到另一个单元格会发生变化,但我们不确定如何动态地将它传递给这个模板。任何帮助将不胜感激。模板在 Cell EditorTemplate 中指定,或者通过在宿主类中指定属性[UIHint("....")]

任何建议将不胜感激。

4

2 回答 2

2

这个对我有用。

在网格中使用事件:

.Events(e => e.DataBound("On_DataBound"))   

这是我的事件的 js 函数:

function On_DataBound(e) {
    var data = e.sender._data;

    for (var i = 0; i < data.length; i++) {
        var kendoId = data[i].uid;
        var categoryId = data[i].UserQueryTypeID;

        $("#MainProp_" + categoryId).kendoDropDownList({
            dataTextField: "Name",
            dataValueField: "Value",
            autoBind: true,
            change: function(e) {
                var value = this.value();
                var catID = $(e.sender.element).attr("data-categoryID")

                $.post("/UserQueryTypes/SetKeyDetailField", { categoryId: catID, keyDetailField: value }, function (data) { if (data != "true") alert(data); });
            },
            dataSource: {
                transport: {
                    read: {
                        dataType: "json",
                        url: "/UserQueryTypes/GetSelectedProperties?categoryID=" + categoryId
                    }
                }
            }
        });
    }
}

在网格中使用模板:

col.Bound(b => b.UserQueryTypeID).ClientTemplate("<input id=\"MainProp_#=UserQueryTypeID#\" data-categoryID=\"#=UserQueryTypeID#\" />");
于 2013-10-10T21:04:47.073 回答
1

您的数据在客户端动态变化,意味着您应该使用 javascript ,这应该让您了解如何实现它:

<%= Html.Kendo()
.DropDownList()
.Name(ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty))
.DataTextField("Name")
.DataValueField("Value")
.DataSource(source => 
{ 
    source.Read(read => 
    read.Action("GetSelectedProperties","UserQueryTypes")).Data("getId"); 
})
%>
<script>
function getId() {
    return {
        id: $("#inputbox1").val() //replace $("#inputbox1").val() with code which get the proper id from grid.
    };
}
</script>

也检查这个示例(Cascading DropDownList)。希望能解决你的问题。

于 2013-10-10T19:16:30.200 回答