2

状況:

  • 剣道データソース

    var ordersDataSource = new kendo.data.DataSource({
        type: "odata",
        transport: {
            read: {
                url: "http://localhost/odata.svc/Orders?$expand=OrderDetails"
            }
        },
        schema: {
            type: "json",
            data: function(response){
                return response.value;
            }
            total: function(response){
                return response['odata.count'];
            }
        },
        serverPaging: true,
        serverFiltering: true,
        serverSorting: true
    })
    
  • odata ソースから読み取られた json データは次のようになります。

    {
        odata.metadata: "xxxx",
        odata.count: "5",
        value: [
            {
                OrderId: 1,
                OrderedDate: "2013-02-20",
                OrderInfoA: "Info A",
                OrderInfoB: "Info B"
                OrderDetails: [
                    {
                        OrderDetailId: 6,
                        OrderDetailInfoC: "Info C",
                        OrderDetailInfoD: "Info D"
                    },
                    {
                        //Another OrderDetail's data
                    }
                ]
            },
            {
                // Another Order's data
            }
        ]
    }
    

質問 1 :

1.「計算された」プロパティを定義したい場合:OrderedDateRelative、今日(2013-02-25)と注文が作成された日(2013-02-20)の間の日数である必要があります。前に」、クライアント側でこれを達成するにはどうすればよいですか?

質問 1 への回答: http://jsbin.com/ojomul/7/edit

質問 2 --更新--

2.すべての注文にはネストされたプロパティ OrderDetails があるため、ネストされた OrderDetails プロパティの計算フィールドを定義することは可能ですか? のように:各OrderDetailの OrderDetailInfoCAndD で、値はOrderDetailInfoC + OrderDetailInfoDのようなものである必要があります。これは「情報 C 情報 D」ですか?

ありがとう、

ディーン

4

3 に答える 3

7

データソースのモデルを指定することにより、計算フィールドを作成できます。

  dataSource = new kendo.data.DataSource({
    data: [
      { first: "John", last: "Doe" }, 
      { first: "Jane", last: "Doe" }
    ],
    schema: {
      model: {
        // Calculated field
        fullName: function() {
          return this.get("first") + " " + this.get("last");
        }
      }
    }
  });

これがライブデモです:http://jsbin.com/ojomul/1/edit

于 2013-02-25T15:20:00.693 に答える
2

Kendo Gridで計算フィールドを使用する方法は次のとおりです。

var crudServiceBaseUrl = "http://demos.telerik.com/kendo-ui/service",
dataSource = new kendo.data.DataSource({
    transport: {
        read: {
            url: crudServiceBaseUrl + "/Products",
            dataType: "jsonp"
        }
    },
    pageSize: 20,
    schema: {
        model: {
            total: function (item) {
                return this.UnitPrice * this.UnitsInStock;
            }
        }
    }
});

$("#grid").kendoGrid({
    dataSource: dataSource,
    pageable: true,
    height: 550,
    sortable: true,
    filterable: true,
    toolbar: ["create"],
    columns: [
        { field: "UnitPrice", title: "Unit Price"},
        { field: "UnitsInStock", title: "Units In Stock", width: "120px" },
        { field: "total()", title: "Total" }]
});
于 2014-08-27T19:23:20.683 に答える