0

以前、剣道グリッドを動的に生成するこのコードに関する質問を投稿しました。

次のように列数をハードコーディングしても、現在の問題は次のとおりです。

var numberOfRows = 2;
var numberOfColumns = 12;
var columnsPerRow = numberOfColumns/numberOfRows;

エラーが発生するということですか:

ここに画像の説明を入力

First of all, what does this mean?

columnsPerRow は次のように使用されます。

var columnDefs = [];
counter = 0;

var arrayData = [];
for( var x = 0; x < result.length-1; x=x+Math.floor(columnsPerRow)+1 )
{
    var tempArr = new Array();

    for( var y = 0; y < columnsPerRow; y++ )
    {
        var num = x + y;
        tempArr.push(result[num]);
    }
    arrayData.push(tempArr);
}
var dataTitles = [];
for( var x = 0; x < titleArray.length; x++ )
{
    var head = "";
    head = titleArray[x];
    head = head.replace(/ /g,"");
    dataTitles.push(head);
}

var counter = 0;
var columnDefs = [];
for (var i = 0; i < columnsPerRow.length; i++) 
{
    if (counter == (columnsPerRow - 1)) 
    {
        counter = 0;
    }
    columnDefs.push({ field: dataTitles[counter], template: result[i].value });
    counter++;
}

グリッドは次のように表示されます。

ここに画像の説明を入力

そして、次のように列変数を非表示にすると:

/*var numberOfRows = 2;
var numberOfColumns = 12;
var columnsPerRow = numberOfColumns/numberOfRows;*/

出力は次のようになります。

ここに画像の説明を入力

ただし、列数には null 値が使用されるため、for ループはループしません。

ただし、グリッドにはデータが表示されません。

すべての JavaScript と html をこのjsfiddleに配置しました。フィドルでは機能していませんが。未使用のコードがあるかもしれません。私はそれに沿ってそれを取り除くのに忙しい。

これらのファイルが添付されています。

<link href='assets/css/kendo.custom.css' rel='stylesheet' type='text/css' />
<link href='assets/css/kendo.common.min.css' rel='stylesheet'/>
<link href='assets/css/kendo.default.min.css' rel='stylesheet' type='text/css' />
<script src='assets/js/jquery.min.js'></script>
<script src='assets/js/kendo.all.min.js'></script>

また、データがグリッドに表示されるというこの問題を修正するにはどうすればよいですか?

どんな助けでも感謝します、ありがとう...

4

1 に答える 1

0

私の問題はこのforループにあることがわかりました:

for (var i = 0; i < columnsPerRow.length; i++) 
{
    if (counter == (columnsPerRow - 1)) 
    {
        counter = 0;
    }
    columnDefs.push({ field: dataTitles[counter], template: result[i].values });
    counter++;
}

問題は次のとおりです。

i < columnsPerRow.length

する必要があります

i < columnsPerRow

columnDefs.push({ field: dataTitles[counter], template: result[i].values

する必要があります

columnDefs.push({ field: dataTitles[counter], template: result[i]

上記の @Samuel Caillerieが投稿したように、tableTitle追加する必要があります。これは、ヘッダーを格納する配列です。

于 2013-04-09T08:36:03.090 に答える