-2

コンテンツ ページから呼び出すことができる ASP.NET マスター ページで JavaScript 関数を作成したいと考えています。基本的に、関数に gridview クライアント ID と列数を渡し、この関数を使用tablesorterして gridview で jQuery を呼び出し、関数呼び出しで指定された列数をループします。

私は次のように関数を呼び出します:

sortTable(<%=gridView1.ClientID%>, 8)

私は次のように関数を書きました:

<script type="text/javascript">
        function sortTable(gridView, numberOfColumns) {
            $("#" + gridView).tablesorter({
                headers: {
                    for(var i = 0; i<numberOfColumns; i++){
                        i: { sorter: 'fancyNumber' }
                }

                },
                /*Use jQuery to assign zebra stripe CSS, works in IE6+ 
                rather than using pure CSS which doesn't work in IE8 and below.*/

                widgets: ['zebra'],
                widgetZebra: { css: ['normal-row', 'alt-row'] }
            });
        }
    </script>   

ただし、Visual Studio はfor loop. headersプロパティ内でループを作成することはできますか? この望ましい機能のより良い代替手段はありますか?

編集:なるほど。オブジェクト宣言内でループすることはできません。これを行う最善の方法は、文字列を作成して をループし、numberOfColumns毎回文字列に追加することだと思います。

var headerString = "headers: "

for(var i = 0; i < numberOfColumns; i++){
    headerString = headerString & i & " { sorter: 'fancyNumber' } ,"
}

そして、オブジェクト宣言内で headerString var の置換を使用しますか?

それは可能ですか?

4

2 に答える 2

4

最初にオブジェクトを構築する必要があります。

var headers = {};
for(var i = 0; i<numberOfColumns; i++) {
    headers[i] = { sorter: 'fancyNumber' };
}

$("#" + gridView).tablesorter({
    headers: headers,
    //...
});

(間違った) 構文に基づいて必要な出力を推測しているので、少し調整する必要があるかもしれませんが、考え方は正しいです。

于 2013-08-22T19:16:15.440 に答える
1

forループは値に評価されないため、オブジェクト定義内でループすることはできません。どちらもifステートメントをしません。代わりに、事前にオブジェクトを構築する必要があります。

  var headers = {}

  for(var i = 0; i<numberOfColumns; i++)
    headers[i] = { sorter: 'fancyNumber' }

  $("#" + gridView).tablesorter({
    headers: headers

    },
    /*Use jQuery to assign zebra stripe CSS, works in IE6+ 
    rather than using pure CSS which doesn't work in IE8 and below.*/

    widgets: ['zebra'],
    widgetZebra: { css: ['normal-row', 'alt-row'] }
  });
于 2013-08-22T19:16:32.093 に答える