GridView,是ASP.NET的一个显示数据的表格控件。我想写一个JS的,先问一个很直接的问题吧。这个类,我可以传递一个参数,列名数组=["姓名","年龄",……],用来控制显示SQL查询出来的数据集里的哪些列。但有些列,我想显示的时候定制一下,原来GridView里可以这么写<%# MyFun(Eval("H"), Eval("HPrecision"))%>MyFun是一个后台的C#代码,H、HPrecision是两个列的名称,功能是通过MyFun,把H、HPrecision这两个列转换为一个字符串,显示在这里,这样就达到了定制某些列的功能。
可是我写一个JavaScript代码,如何来控制这些呢?
可是我写一个JavaScript代码,如何来控制这些呢?
1:在现有DOM下进行效果渲染。定义一个基本的DOM结构去显示基本数据,然后通过你的插件中的其他相关定义,对DOM进行一些自定义的操作,使它变成你想要的界面效果。这种方式就是可以将数据与视觉效果在一定程度进行分离,获取数据和显示数据由后台语言去完成。
2:全部使用字面量传参的方式,由插件完成DOM的创建,事件的绑定等等。这种方式就是将数据的获取与显示也放到插件中去了,那肯定是要使用ajax方式进行异步的数据获取了PS:一个完善的Grid插件,要做的事情有很多。上面只是说的大致的实现思路。
"用来控制显示SQL查询出来的数据集里的哪些列。"
这个不是客户端的JS应该做的事,而是后台的事,不需要显示你传回来干嘛?不加过滤的传回整个记录集,经常会造成性能上的极大浪费,一旦用户数量较多,你立即就崩溃了.
前台只负责显示和必要的交互.数据的事由后台负责好.
"H、H的精度,我显示的时候只要显示H啊,H的精度作为输出H时候的参数"
这还是你后台该干的事情,按照精度格式化好之后转换成字串输出到前台.到了前台它还是数字.
你说的SQL不能完成所有数据处理,是对的,但和这个问题无关.
我说的就是你在SQL出来之后,后台再进行处理,处理妥了再还回前台.你怎么一下子把后台也越过,直接说到SQL去了.你的后台是干嘛的呢?
var gvItem = function(colPar, fun) {
this.colPar = colPar;
this.fun = fun;
}
var gvitem = new gvItem(["c", "d"], function(myParArr) { return myParArr[0] + "|" + myParArr[1]; });
var arr = ["a", "b", gvitem];
function arrTest(myArr) {
var strs = [];
for(var i in myArr)
{
if (typeof myArr[i] == 'string') {
strs.push(myArr[i]);
} else {
strs.push(myArr[i].fun(myArr[i].colPar));
}
}
return strs.join(", ");
}
function Button1_onclick() {
alert(arrTest(arr));
}</script>
而11楼正是我想要的方案。