Kendo ui 剑道网格外键列动态绑定 @(Html.Kendo().Grid((IEnumerable)Model.contact_lst) .名称(“网格”) .列(列=> { columns.Bound(o=>o.ContactID).Visible(false); columns.Bound(o=>o.ContactName).Title(“联系人姓名”); columns.ForeignKey(p=>p.CPOID,(System.Collections.IEnumerable)ViewData[“CPOs”],“cpo\u id”,“contract\u po”) .标题(“公司-合同/采购订单”); Command(Command=>{Command.Edit();Command.Destroy();}).Width(182); }) .ToolBar(ToolBar=>ToolBar.Create()) .Editable(可编辑=>Editable.Mode(GridEditMode.InLine)) .Pageable() .Sortable() .可过滤() .ToolBar(ToolBar=> { 工具栏.模板(@ 地点: @(Html.Kendo().DropDownListFor(m=>m.SiteID) .名称(“站点ID”) .DataTextField(“文本”) .DataValueField(“值”) .事件(e=>e.Change(“类别更改”)) .Value(Model.SiteID.ToString()) .DataSource(ds=> { ds.Read(“工具栏模板”、“类别”、“联系人”); }) ) ); }) .DataSource(DataSource=>DataSource .Ajax() .页面大小(20) .Events(Events=>Events.Error(“错误处理程序”)) .Model(Model=>Model.Id(p=>p.ContactID)) .Create(update=>update.Action(“editingline\u Create”,“Contact”).Data(“additionalInfo”)) .Read(Read=>Read.Action(“editingline\u Read”,“Contact”).Data(“additionalInfo”)) .Update(Update=>Update.Action(“editingline\u Update”,“Contact”).Data(“additionalInfo”)) .Destroy(update=>update.Action(“editingline\u Destroy”,“Contact”).Data(“additionalInfo”)) ) )

Kendo ui 剑道网格外键列动态绑定 @(Html.Kendo().Grid((IEnumerable)Model.contact_lst) .名称(“网格”) .列(列=> { columns.Bound(o=>o.ContactID).Visible(false); columns.Bound(o=>o.ContactName).Title(“联系人姓名”); columns.ForeignKey(p=>p.CPOID,(System.Collections.IEnumerable)ViewData[“CPOs”],“cpo\u id”,“contract\u po”) .标题(“公司-合同/采购订单”); Command(Command=>{Command.Edit();Command.Destroy();}).Width(182); }) .ToolBar(ToolBar=>ToolBar.Create()) .Editable(可编辑=>Editable.Mode(GridEditMode.InLine)) .Pageable() .Sortable() .可过滤() .ToolBar(ToolBar=> { 工具栏.模板(@ 地点: @(Html.Kendo().DropDownListFor(m=>m.SiteID) .名称(“站点ID”) .DataTextField(“文本”) .DataValueField(“值”) .事件(e=>e.Change(“类别更改”)) .Value(Model.SiteID.ToString()) .DataSource(ds=> { ds.Read(“工具栏模板”、“类别”、“联系人”); }) ) ); }) .DataSource(DataSource=>DataSource .Ajax() .页面大小(20) .Events(Events=>Events.Error(“错误处理程序”)) .Model(Model=>Model.Id(p=>p.ContactID)) .Create(update=>update.Action(“editingline\u Create”,“Contact”).Data(“additionalInfo”)) .Read(Read=>Read.Action(“editingline\u Read”,“Contact”).Data(“additionalInfo”)) .Update(Update=>Update.Action(“editingline\u Update”,“Contact”).Data(“additionalInfo”)) .Destroy(update=>update.Action(“editingline\u Destroy”,“Contact”).Data(“additionalInfo”)) ) ),kendo-ui,telerik,kendo-grid,Kendo Ui,Telerik,Kendo Grid,我想在SiteID下拉列表的change event上重新绑定外键列值,它位于标题模板上。 我在“EditingLine\u Read”事件中尝试过,但ViewBag值不更新。有什么建议吗 剑道网格不支持动态重新绑定。 最接近的方法是定义一个自定义编辑器模板 它使用AJAX绑定数据 @(Html.Kendo().Grid((IEnumerable<Doc.Web.Models.Common.ContactModel>)Model.contact_lst) .Name("g

我想在SiteID下拉列表的change event上重新绑定外键列值,它位于标题模板上。
我在“EditingLine\u Read”事件中尝试过,但ViewBag值不更新。有什么建议吗

剑道网格不支持动态重新绑定。 最接近的方法是定义一个自定义编辑器模板 它使用AJAX绑定数据

@(Html.Kendo().Grid((IEnumerable<Doc.Web.Models.Common.ContactModel>)Model.contact_lst)  
    .Name("grid")
    .Columns(columns =>
    {

        columns.Bound(o => o.ContactID).Visible(false);
        columns.Bound(o => o.ContactName).Title("Contact Name");
        columns.ForeignKey(p => p.CPOID, (System.Collections.IEnumerable)ViewData["CPOs"], "cpo_id", "contract_po")
                .Title("Company - Contact/Purchase Order");
        columns.Command(command => { command.Edit(); command.Destroy(); }).Width(182);
    })
    .ToolBar(toolbar => toolbar.Create())
    .Editable(editable => editable.Mode(GridEditMode.InLine))
    .Pageable()
    .Sortable()
    .Filterable()
    .ToolBar(toolbar =>
    {
        toolbar.Template(@<text>
           <div class="toolbar">
               <a href="/Contact/EditingInline_Read?grid-mode=insert" class="k-button k-button-icontext k-grid-add">
    <span class="k-icon k-add"></span>Add New Record
</a>
                    <label class="category-label" for="category">Site:</label>
                       @(Html.Kendo().DropDownListFor(m => m.SiteID)
                            .Name("SiteID")
                            .DataTextField("Text")
                            .DataValueField("Value")
                            .Events(e => e.Change("categoriesChange"))
                            .Value(Model.SiteID.ToString())
                            .DataSource(ds =>
                            {
                                ds.Read("ToolbarTemplate_Categories", "Contact");
                            })
                        ) 

                        </div>

        </text>);
    })
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(20)
        .Events(events => events.Error("error_handler"))
        .Model(model => model.Id(p => p.ContactID))
        .Create(update => update.Action("EditingInline_Create", "Contact").Data("additionalInfo"))
        .Read(read => read.Action("EditingInline_Read", "Contact").Data("additionalInfo"))
        .Update(update => update.Action("EditingInline_Update", "Contact").Data("additionalInfo"))
        .Destroy(update => update.Action("EditingInline_Destroy", "Contact").Data("additionalInfo"))

    )
)
RemoteForeignKey编辑器模板

columns.ForeignKey(p => p.CPOID, 
(System.Collections.IEnumerable)ViewData["CPOs"], "cpo_id", "contract_po")
.Title("Company - Contact/Purchase Order")
.EditorTemplateName("RemoteForeignKey");
dataFunc javascript函数

@model int

@(Html.Kendo().DropDownListFor(m => m)
  .DataSource(source =>
  {
      source.Read(read =>
      {
          read.Action("actionName", "controllerName").Type(HttpVerbs.Post).Data("dataFunc");
      }).ServerFiltering(false);
  })
  .DataValueField("cpo_id")
  .DataTextField("contract_po")
)
function dataFunc () {
    return {
        SiteID: $("#SiteID").val() // here we pass the site ID to server
    };
}
和您的服务器功能

@model int

@(Html.Kendo().DropDownListFor(m => m)
  .DataSource(source =>
  {
      source.Read(read =>
      {
          read.Action("actionName", "controllerName").Type(HttpVerbs.Post).Data("dataFunc");
      }).ServerFiltering(false);
  })
  .DataValueField("cpo_id")
  .DataTextField("contract_po")
)
function dataFunc () {
    return {
        SiteID: $("#SiteID").val() // here we pass the site ID to server
    };
}
然后,下拉列表中的值将根据SiteID输入的当前值进行过滤