用于Treeview的Kendo UI HierarchicalDataSource,带有动态模式

时间:2016-08-08 14:50:28

标签: javascript kendo-ui kendo-treeview

由于HierarchicalDataSource,我试图显示Kendo树视图。 它是一个简单的地区,国家,城市等级,但困难在于我们有3个可能的地区,国家可以出现在第二或第三层。

基本上, - 第一级区域仅包含其他区域 - 第二级地区包含其他地区或国家 - 第三级区域仅包含国家

以下是我的架构:

 var portsSchema = {
            schema: {
                data: "PortList",
                model: {
                    id: "Code"
                }
            }
        };

        var countrySchema = {
            schema: {
                data: "CountryList",
                model: {
                    id: "Code",
                    children: portsSchema
                }
            }
        };

        var regionCountrySchema = {
            schema: {
                data: "RegionList",
                model: {
                    id: "id",
                    children: countrySchema
                }
            }
        };

        var regionSchema = {
            schema: {
                data: "RegionList",
                model: {
                    id: "id",
                    children: regionCountrySchema
                }
            }
        };

根据该地区是否有国家这一事实,我想指定一种特定类型的儿童(regionSchema或regionCountrySchema)。

var tvDataSource = new kendo.data.HierarchicalDataSource({
            data: regions,
            schema: {
                model: function (data) {

                    **how to return the right children schema ?**
                }
            }
        });

返回{children:regionSchema}或{children:regionCountrySchema}会触发js kendo错误。

有任何想法实现这一目标吗?谢谢。 下面的JSON数据示例。



[
  {
    "Id": 1,
    "Name": "MIDDLE EAST AND RED SEA",
    "RegionList": [
      {
        "Id": 12,
        "Name": "MIDDLE EAST",
        "RegionList": [
          {
            "Id": 45,
            "Name": "M. EAST",
            "RegionList": [
              
            ],
            "CountryList": [
              {
                "Id": 12007,
                "Code": "AE",
                "Name": "UAE",
                "PortList": [
                  {
                    "Id": 6005,
                    "Code": "AEJEA",
                    "Name": "JEBEL ALI"
                  },
                  {
                    "Id": 16014,
                    "Code": "AEAJM",
                    "Name": "AJMAN"
                  },
                  {
                    "Id": 16015,
                    "Code": "AEAUH",
                    "Name": "ABU DHABI"
                  },
                  {
                    "Id": 15109,
                    "Code": "AEKLF",
                    "Name": "KHOR AL FAKKAN"
                  },
                  {
                    "Id": 15001,
                    "Code": "AERKT",
                    "Name": "RAS AL KHAIMAH"
                  },
                  {
                    "Id": 16018,
                    "Code": "AESHJ",
                    "Name": "SHARJAH"
                  },
                  {
                    "Id": 14863,
                    "Code": "AEQIW",
                    "Name": "UMM AL QAIWAIN"
                  },
                  {
                    "Id": 15647,
                    "Code": "AEFJR",
                    "Name": "AL - FUJAYRAH"
                  }
                ]
              },
              {
                "Id": 12018,
                "Code": "OM",
                "Name": "OMAN",
                "PortList": [
                  {
                    "Id": 6011,
                    "Code": "OMSLL",
                    "Name": "SALALAH"
                  },
                  {
                    "Id": 16218,
                    "Code": "OMSOH",
                    "Name": "SOHAR"
                  }
                ]
              },
              {
                "Id": 10069,
                "Code": "BH",
                "Name": "BAHRAIN",
                "PortList": [
                  {
                    "Id": 15345,
                    "Code": "BHKBS",
                    "Name": "BAHRAIN"
                  }
                ]
              },
              {
                "Id": 62292,
                "Code": "IQ",
                "Name": "IRAQ",
                "PortList": [
                  {
                    "Id": 15383,
                    "Code": "IQBSR",
                    "Name": "BASRA"
                  },
                  {
                    "Id": 14673,
                    "Code": "IQUQR",
                    "Name": "UMM QASR PT"
                  }
                ]
              },
              {
                "Id": 62291,
                "Code": "IR",
                "Name": "IRAN, ISLAMIC REPUBLIC OF",
                "PortList": [
                  {
                    "Id": 15250,
                    "Code": "IRBKM",
                    "Name": "BANDAR KHOMEINI"
                  },
                  {
                    "Id": 15249,
                    "Code": "IRBND",
                    "Name": "BANDAR ABBAS"
                  },
                  {
                    "Id": 14973,
                    "Code": "IRBUZ",
                    "Name": "BUSHEHR"
                  },
                  {
                    "Id": 14671,
                    "Code": "IRKHO",
                    "Name": "KHORRAMSHAHR"
                  }
                ]
              },
              {
                "Id": 62306,
                "Code": "KW",
                "Name": "KUWAIT",
                "PortList": [
                  {
                    "Id": 15810,
                    "Code": "KWSAA",
                    "Name": "SHUAIBA"
                  },
                  {
                    "Id": 15811,
                    "Code": "KWSWK",
                    "Name": "SHUWAIKH"
                  }
                ]
              },
              {
                "Id": 12002,
                "Code": "SA",
                "Name": "SAUDI ARABIA",
                "PortList": [
                  {
                    "Id": 15039,
                    "Code": "SAJUB",
                    "Name": "JUBAIL"
                  },
                  {
                    "Id": 16147,
                    "Code": "SADMM",
                    "Name": "AD DAMMAM"
                  }
                ]
              },
              {
                "Id": 62364,
                "Code": "QA",
                "Name": "QATAR",
                "PortList": [
                  {
                    "Id": 15739,
                    "Code": "QADOH",
                    "Name": "DOHA"
                  },
                  {
                    "Id": 14795,
                    "Code": "QAMES",
                    "Name": "MESAIEED"
                  }
                ]
              }
            ]
          }
        ],
        "CountryList": [
          
        ]
      },
      {
        "Id": 30,
        "Name": "RED SEA",
        "RegionList": [
          {
            "Id": 65,
            "Name": "RED SEA",
            "RegionList": [
              
            ],
            "CountryList": [
              
            ]
          }
        ],
        "CountryList": [
          {
            "Id": 12002,
            "Code": "SA",
            "Name": "SAUDI ARABIA",
            "PortList": [
              {
                "Id": 6003,
                "Code": "SAKAC",
                "Name": "KING ABDULLAH PORT"
              },
              {
                "Id": 15731,
                "Code": "SAJED",
                "Name": "JEDDAH"
              }
            ]
          },
          {
            "Id": 10114,
            "Code": "DJ",
            "Name": "DJIBOUTI",
            "PortList": [
              {
                "Id": 8059,
                "Code": "DJJIB",
                "Name": "DJIBOUTI"
              }
            ]
          },
          {
            "Id": 10122,
            "Code": "ER",
            "Name": "ERITREA",
            "PortList": [
              {
                "Id": 15031,
                "Code": "ERMSW",
                "Name": "MASSAWA"
              }
            ]
          },
          {
            "Id": 62300,
            "Code": "JO",
            "Name": "JORDAN",
            "PortList": [
              {
                "Id": 14801,
                "Code": "JOAQJ",
                "Name": "AL \u0027AQABAH"
              }
            ]
          },
          {
            "Id": 50001,
            "Code": "SD",
            "Name": "sd",
            "PortList": [
              {
                "Id": 15734,
                "Code": "SDPZU",
                "Name": "PORT SUDAN"
              }
            ]
          },
          {
            "Id": 62425,
            "Code": "YE",
            "Name": "YEMEN",
            "PortList": [
              {
                "Id": 15302,
                "Code": "YEHOD",
                "Name": "HODEIDAH"
              },
              {
                "Id": 15304,
                "Code": "YEMKX",
                "Name": "MUKALLA"
              },
              {
                "Id": 15300,
                "Code": "YEADE",
                "Name": "ADEN"
              }
            ]
          },
          {
            "Id": 10118,
            "Code": "EG",
            "Name": "EGYPT",
            "PortList": [
              {
                "Id": 16030,
                "Code": "EGSOK",
                "Name": "SOKHNA PORT"
              }
            ]
          }
        ]
      }
    ],
    "CountryList": [
      
    ]
  }
]




0 个答案:

没有答案