【问题标题】:Javascript - How to add objects to column array in kendo ui grid dynamically?Javascript - 如何动态地将对象添加到 kendo ui 网格中的列数组?
【发布时间】:2013-04-03 06:04:24
【问题描述】:

正如标题所暗示的那样,我正在尝试在列数组中生成对象,尽管我还没有找到工作方法。

alert( "Value 1: " + temporaryArray[1] + " - " + finalArray[1].values ); 
alert( "Value 2: " + temporaryArray[2] + " - " + finalArray[2].values ); 
var myGrid =  $("#grid").kendoGrid( 
{
    columns: 
    [
        {
            title: temporaryArray[0] + " ",
            field: gridArray[0].values + " "
        }
    ],
    dataSource: 
    {
        data:finalArray,
        pageSize:10
    },
    scrollable:false,
    pageable:true 
});

我尝试了以下方法来添加对象:

for( var x = 0; x < finalArray.length; x++ )
{
    myGrid[columns] = { temporaryArray[x]:finalArray[x] };
}

for( var x = 0; x < finalArray.length; x++ )
{
    myGrid.columns[values]= finalArray[x].values;
}

没有成功...

以下看起来像我想要动态实现的对象内部的对象数组:

columns: 
[
    {
        title: temporaryArray[0] + " ",
        field: gridArray[0].values + " "
    },
    {
        title: temporaryArray[1] + " ",
        field: gridArray[1].values + " "
    },
    {
        title: temporaryArray[2] + " ",
        field: gridArray[2].values + " "
    }
],

例如:

for( var x = 0; x < finalArray.length; x++ )
{
    myGrid[columns] = { temporaryArray[x]:finalArray[x] };
}

我想使用 for 循环生成对象,以在列数组中生成对象数组。

我想知道的是,这是否可以动态执行?还是完全可以不用硬编码?

【问题讨论】:

  • 以上部分已经完成,请在下面找到下一个问题。

标签: javascript kendo-ui kendo-grid


【解决方案1】:

你可以做到。让标题存储在titleDefs 中,field 名称存储在fieldDef 中。那么你应该这样做:

// Title Definitions
var titleDefs = [
    "First Name", "Last Name", "Title"
];
// Field Definition
var fieldDefs = [
    "FirstName", "LastName", "Title"
];
// Lets compute column definition
var columnDefs = [];
for (var i = 0; i < titleDefs.length; i++) {
    columnDefs.push({ title : titleDefs[i], field: fieldDefs[i] });
}
// Now, create the grid using columnDefs as argument
var grid = $("#grid").kendoGrid({
    dataSource: {
        data    : dataArray,
        pageSize: 10
    },
    columns   : columnDefs
}).data("kendoGrid");

注意:在本例中,我在内存中定义了一个数据源,它是 JavaScript array,但您可以从更改 DataSource 定义的服务器获取数据。

注意:在您的代码中,您在 title 定义中添加了额外的空格,这是不正确的:列定义是 JavaScript 代码而不是 strings,所以您没有格式化它,就像你要显示它一样。

【讨论】:

  • 感谢您的快速回复和额外说明。我会记住这一点。现在一切正常。
  • 我发现在上面的代码中,当你添加的值多于标题时,会为字段生成空白标题。如何向已创建的列添加更多值?
  • 在我的代码中,我在 columnsDef.length 上进行迭代,所以我不能添加比行值更多的 titles。您可以在 JSFiddle 中发布实际代码以向我展示您拥有的东西吗?
  • 看到我从 xml 文件中获取数据,我只在 jsfiddle.net/jLsjk/1 发布了 javascript 编码。我有 2 个数组,一个用于网格标题,一个用于字段值。标题由 3 到 7 之间的任意数量的字段组成,由 JS 计算,而字段值数组由 +-数百个值组成。我目前使用的代码只是在整个网格中循环同一行数据。谢谢...
  • 一切正常,直到最后一条警报消息。我已将jsfiddle.net/jLsjk/1 上的代码替换为jsfiddle.net/jLsjk/2 上的代码,其中包含两个示例数组。虽然我看到了,但代码有一个小问题,因为它不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-16
相关资源
最近更新 更多