【问题标题】:How to get field type in Kendoui?如何在 Kendo Ui 中获取字段类型?
【发布时间】:2015-03-26 04:22:35
【问题描述】:

数据源中有没有类似dataSource.getFieldType(field)的方法:

var dataSource = new kendo.data.DataSource({
    // somethings here,
    schema : {
         model : {
            post_id : {type: "number" },
            post_title : {type:"string"},
            post_date : {type:"date"}
         }
    }
});

var fieldType = dataSource.getFieldType("post_title"); // it should return string

【问题讨论】:

    标签: kendo-ui kendo-datasource


    【解决方案1】:

    您应该将getFieldType 函数定义为:

    function getFieldType(dataSource, field) {
        return dataSource.options.schema.model.fields[field].type;
    }
    

    使用它会是:

    var fieldType = getFieldType(dataSource, "post_title");
    

    或者,您可以扩展 KendoUI DataSource 以定义一个名为 getFieldType 的新方法,方法是:

    kendo.data.DataSource.prototype.getFieldType = function(field) {
        return this.options.schema.model.fields[field].type;
    }
    

    使用它会是:

    var fieldType = dataSource.getFieldType("post_title");
    

    在这里查看使用 DataSource 扩展的版本:

    $(document).ready(function() {
      kendo.data.DataSource.prototype.getFieldType = function(field) {
        return this.options.schema.model.fields[field].type;
      }
    
      $("#show").on("click", function() {
        var ds = $("#grid").data("kendoGrid").dataSource;
        alert("Freight: " + ds.getFieldType("Freight"));
      });
    
    
      $("#grid").kendoGrid({
        dataSource: {
          type: "odata",
          transport: {
            read: "http://demos.telerik.com/kendo-ui/service/Northwind.svc/Orders"
          },
          schema: {
            model: {
              fields: {
                OrderID: { type: "number" },
                Freight: { type: "number" },
                ShipName: { type: "string" },
                OrderDate: { type: "date" },
                ShipCity: { type: "string" }
              }
            }
          },
          pageSize: 20,
          serverPaging: true,
          serverFiltering: true,
          serverSorting: true
        },
        height: 550,
        pageable: true,
        columns: [
          {
            field:"OrderID",
            filterable: false
          },
          "Freight",
          {
            field: "OrderDate",
            title: "Order Date",
            format: "{0:MM/dd/yyyy}"
          },
          {
            field: "ShipName",
            title: "Ship Name"
          },
          {
            field: "ShipCity",
            title: "Ship City"
          }
        ]
      });
    });
    html { 
      font-size: 12px; 
      font-family: Arial, Helvetica, sans-serif;
    }
    <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.common.min.css" />
    <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.default.min.css" />
    <script src="http://cdn.kendostatic.com/2014.3.1316/js/jquery.min.js"></script>
    <script src="http://cdn.kendostatic.com/2014.3.1316/js/kendo.all.min.js"></script>
    
    <button id="show" class="k-button">Show Freight type</button>
    <div id="grid"></div>

    【讨论】:

    • 我想知道剑道是否支持指定以外的数据类型:数字、字符串和日期?在哪里可以找到支持的数据类型列表?
    • @DmytroLaptin 请检查this 并在此处向下滚动到 options.fields.fieldName.type
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    相关资源
    最近更新 更多