我想在ASP.NET母版页上创建一个JavaScript函数,我可以从内容页面调用它。我本质上将函数传递给gridview客户端ID和许多列,我将使用此函数在gridview上调用jQuery tablesorter
,循环遍历函数调用中指定的列数。
我会像这样调用函数:
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' } ,"
}
然后在对象声明中使用headersString var吗?
这可能吗?
答案 0 :(得分:4)
您需要先构建对象:
var headers = {};
for(var i = 0; i<numberOfColumns; i++) {
headers[i] = { sorter: 'fancyNumber' };
}
$("#" + gridView).tablesorter({
headers: headers,
//...
});
我根据你的(不正确的)语法猜测你想要的输出,所以你可能需要调整一下,但这个想法是正确的。
答案 1 :(得分: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'] }
});