Kendo Grid外键列动态绑定

 zhongxiaomin1981 发布于 2023-02-04 23:47

Kendo网格不支持动态重新绑定.您可以获得的最接近的事情是定义一个使用AJAX绑定数据的自定义编辑器模板.

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

RemoteForeignKey编辑器模板

@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")
)

dataFunc javascript函数

function dataFunc () {
    return {
        SiteID: $("#SiteID").val() // here we pass the site ID to server
    };
}

和你的服务器功能

[AcceptVerbs(HttpVerbs.Post)]
public JsonResult actionName(int? SiteID)
{
    if (SiteID != null)
    {
        var objects = (from obj in db.tableName
                       where obj.SiteID == SiteID.Value
                       select new
                       {
                           cpo_id = obj.cpo_id,
                           contract_po = obj.contract_po
                       }).ToList().Distinct().OrderBy(obj => obj.contract_po);
            return Json(objects);
    }
    return null;
}

然后,您的下拉列表中的值将按SiteID输入的当前值进行过滤.

1 个回答
  • Kendo网格不支持动态重新绑定.您可以获得的最接近的事情是定义一个使用AJAX绑定数据的自定义编辑器模板.

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

    RemoteForeignKey编辑器模板

    @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")
    )
    

    dataFunc javascript函数

    function dataFunc () {
        return {
            SiteID: $("#SiteID").val() // here we pass the site ID to server
        };
    }
    

    和你的服务器功能

    [AcceptVerbs(HttpVerbs.Post)]
    public JsonResult actionName(int? SiteID)
    {
        if (SiteID != null)
        {
            var objects = (from obj in db.tableName
                           where obj.SiteID == SiteID.Value
                           select new
                           {
                               cpo_id = obj.cpo_id,
                               contract_po = obj.contract_po
                           }).ToList().Distinct().OrderBy(obj => obj.contract_po);
                return Json(objects);
        }
        return null;
    }
    

    然后,您的下拉列表中的值将按SiteID输入的当前值进行过滤.

    2023-02-04 23:53 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有