当前位置: 首页 > 知识库问答 >
问题:

头部和内容的Kendo网格Json数据

熊嘉茂
2023-03-14

我正在处理ASP.NET MVC5项目,需要用Kendo Grid jQuery更改表。

当前,我正在从Api控制器返回数据,该Api控制器如下所示:

[
headers:{{
            "label": "Name",
            "id": "name",
            "isfixed": true,
            "width": "200px"
        },
        {
            "width": "200px",
            "isfixed": false,
            "id": "city",
            "label": "City"
        },
        },
rows:{
        {name:"Joe",city:"Berlin"},
        {name:"Doe",city:"London"},
        ...
        }
]

剑道似乎不喜欢这种格式。只有这样发送JSON,它才起作用:

[
  { name: "Joe", City: "Berlin" },
  { name: "Doe", City: "Londo" }
]

问题:我可以使剑道网格工作与第一种类型的数据,因为我需要动态列和不同的表的数据?

共有1个答案

澹台星光
2023-03-14

如何实现这一点的详细说明如下:https://docs.telerik.com/kendo-ui/knowledge-base/create-with-dynamic-columns-and-data-types

实现它的代码:


    <div id="grid" style="width:1000px;"></div>

    <script>
      var isDateField =[];
      $.ajax({
        url: "https://www.mocky.io/v2/5835e736110000020e0c003c",
        dataType: "jsonp",
        success: function(result) {
          generateGrid(result);
        }
      });

      function generateGrid(response) {
        var model = generateModel(response);
        var columns = generateColumns(response);

        var grid = $("#grid").kendoGrid({
          dataSource: {
            transport:{
              read:  function(options){
                options.success(response.data);
              }
            },
            pageSize: 5,
            schema: {
              model: model
            }
          },
          columns: columns,
          pageable: true,
          editable:true
        });
      }

      function generateColumns(response){
        var columnNames = response["columns"];
        return columnNames.map(function(name){
          return { field: name, format: (isDateField[name] ? "{0:D}" : "") };
        })
      }

      function generateModel(response) {

        var sampleDataItem = response["data"][0];

        var model = {};
        var fields = {};
        for (var property in sampleDataItem) {
          if(property.indexOf("ID") !== -1){
            model["id"] = property;
          }
          var propType = typeof sampleDataItem[property];

          if (propType === "number" ) {
            fields[property] = {
              type: "number",
              validation: {
                required: true
              }
            };
            if(model.id === property){
              fields[property].editable = false;
              fields[property].validation.required = false;
            }
          } else if (propType === "boolean") {
            fields[property] = {
              type: "boolean"
            };
          } else if (propType === "string") {
            var parsedDate = kendo.parseDate(sampleDataItem[property]);
            if (parsedDate) {
              fields[property] = {
                type: "date",
                validation: {
                  required: true
                }
              };
              isDateField[property] = true;
            } else {
              fields[property] = {
                validation: {
                  required: true
                }
              };
            }
          } else {
            fields[property] = {
              validation: {
                required: true
              }
            };
          }
        }

        model.fields = fields;

        return model;
      }
    </script>
 类似资料:
  • 我使用的剑道网格有三列名称,日期我在其中一列有编辑按钮,现在如果我点击“编辑”按钮,那么相应的行应该在“日期”字段的网格内的KendoDataPicker处于编辑模式。如何实现这一点?

  • 问题内容: 为了避免未知,我一直试图避免使用大多数HTTP协议的属性。 但是,我对自己说,今天我将面对恐惧,开始有目的地使用标题。我一直在尝试将数据发送到浏览器并立即使用。例如,如果我有一个处于就绪状态4的Ajax处理程序函数,如下所示: 并且我在PHP代码中设置了content-type标头: 当清楚地告诉浏览器传入数据为时,为什么不能直接从处理程序函数访问该属性? 问题答案: 该头只是作为您的

  • 我现在用了一段时间格里德莱门茨。我使用了以下代码: 打字稿(Gridelements(已弃用)(gridelements)): 流体模板: 页面: 但是现在我想使用“Gridelements w/DataProcessing(推荐)(Gridelements)”,因为另一个已被弃用。但我看到的只是一个错误: 尝试解析控制器操作的模板文件”标准- 如果我用打字稿代码写这个: 当我创建命名文件时,错误

  • 问题内容: 我有JSON,其结构如下: 我应该如何使用字段和模型中的设置将address.street的值传递到列中? 非常感谢您的任何建议。 问题答案: 如果要在单个列中显示所有值,请执行@RobinGiltner的建议。 如果要在不同的列中显示每个成员,则可以执行以下操作: 即: 用作字段名称。这样甚至可以像示例中一样编辑字段: http //jsfiddle.net/OnaBai/L6LwW

  • 问题内容: 如何使用嵌套JSON填充Kendo UI网格。 我的意思是我的JSON就像 我想要Kendo UI Grid,其列为Id,Name,OtherType和OtherStuff。 提前致谢。! 问题答案: 对于复杂的JSON结构,您可以使用 如果您将JSON稍微更改为: 那么您可以使用:

  • 我们使用的是KendoUIMVC,需要过滤大量记录并在只读数据网格中显示它们。该页面具有多个选择小部件,每个小部件都允许用户从特定数据库列的不同值列表中进行选择。用户在MultiSelect窗口小部件中输入选择后,将单击“刷新”按钮更新网格。网格的数据源。AJAXRead方法应该将用户的选择传递给服务器,并在网格中显示结果。 我知道如何填充MultiSelect小部件,以及如何通过Ajax从服务器