需求:本文应用主要是使用Jquery,进行Table的动态添加列。
涉及技术:JQuery、JSON、Asp.Net
1.希望数据是动态可以添加的;
2.希望数据序列列名(Name,Email)是动态的,可定制的。
最初画面: 最终画面:
Html 代码:
<
table
id
="tbContent"
>
< tr >
< td >
1
</ td >
</ tr >
< tr >
< td >
2
</ td >
</ tr >
< tr >
< td >
3
</ td >
</ tr >
</ table >
< tr >
< td >
1
</ td >
</ tr >
< tr >
< td >
2
</ td >
</ tr >
< tr >
< td >
3
</ td >
</ tr >
</ table >
JQuery代码:
1.希望数据是动态可以添加的
---我们采用JSON结构
因为数据可能是在HTML中直接构建,也可以从后台生成(即Entity转换成JSON),比较灵活。所以选用JSON。
以下为JSON数据:
var
UserList
=
[
{ " UserID " : 1 , " Name " : { " FirstName " : " Rico " , " LastName " : " Rui " }, " Email " : " rico◎hotmail.com " },
{ " UserID " : 2 , " Name " : { " FirstName " : " XXX " , " LastName " : " YYY " }, " Email " : " xxx◎hotmail.com " },
{ " UserID " : 3 , " Name " : { " FirstName " : " ZZZ " , " LastName " : " AAA " }, " Email " : " YYY◎hotmail.com " }
];
{ " UserID " : 1 , " Name " : { " FirstName " : " Rico " , " LastName " : " Rui " }, " Email " : " rico◎hotmail.com " },
{ " UserID " : 2 , " Name " : { " FirstName " : " XXX " , " LastName " : " YYY " }, " Email " : " xxx◎hotmail.com " },
{ " UserID " : 3 , " Name " : { " FirstName " : " ZZZ " , " LastName " : " AAA " }, " Email " : " YYY◎hotmail.com " }
];
2.希望数据序列列名(Name,Email)是动态的,可定制的。
---Ohh,这个想法不错。因为可以动态并可定制的,我们可以针对自已需求即时选用不同选项进行动态显示数据列。
如:在页面上放一个DropDownList设置 Option1:显示1-2项 、Option:显示2-4项 etc..
配置列:
var
list1
=
[
"
Name.FirstName
"
,
"
Name.LastName
"
]; 针对Option1的配置
var list2 = [ " Name.FirstName " , " Name.LastName " , " Email " ]; 针对Option2的配置
var list2 = [ " Name.FirstName " , " Name.LastName " , " Email " ]; 针对Option2的配置
以此类配。
好了,差不多。最后附上完整代码
代码:
<
script language
=
"
javascript
"
type
=
"
text/javascript
"
>
$( function () {
var UserList = [
{ " UserID " : 1 , " Name " : { " FirstName " : " Rico " , " LastName " : " Rui " }, " Email " : " rico◎hotmail.com " },
{ " UserID " : 2 , " Name " : { " FirstName " : " XXX " , " LastName " : " YYY " }, " Email " : " xxx◎hotmail.com " },
{ " UserID " : 3 , " Name " : { " FirstName " : " ZZZ " , " LastName " : " AAA " }, " Email " : " YYY◎hotmail.com " }
];
$( ' #tbContent ' ).find( ' tr ' ).each( function (i) {
// 获取基列的tr对象
var tr = $( this );
// 找到第一列td的值
var tdFirstTxt = tr.find( " td:first " ).text();
// 获取Json中UserID的值
var userID = UserList[i].UserID;
// 配置用于显示的List模板列
var list = [ " Name.FirstName " , " Name.LastName " ];
// 判断第一列的td值是否与UserID的相对应
if (tdFirstTxt == userID) {
// 循环List模板列
$.each(list, function (j) {
// 使用eval用于数组对象转换成JSon的对象。
var element = eval( " UserList[i]. " + list[j]);
// 动态添加列,element为动态配置(所属第一列值)其他的值
tr.append( " <td> " + element + " </td> " );
});
}
});
});
< / script>
$( function () {
var UserList = [
{ " UserID " : 1 , " Name " : { " FirstName " : " Rico " , " LastName " : " Rui " }, " Email " : " rico◎hotmail.com " },
{ " UserID " : 2 , " Name " : { " FirstName " : " XXX " , " LastName " : " YYY " }, " Email " : " xxx◎hotmail.com " },
{ " UserID " : 3 , " Name " : { " FirstName " : " ZZZ " , " LastName " : " AAA " }, " Email " : " YYY◎hotmail.com " }
];
$( ' #tbContent ' ).find( ' tr ' ).each( function (i) {
// 获取基列的tr对象
var tr = $( this );
// 找到第一列td的值
var tdFirstTxt = tr.find( " td:first " ).text();
// 获取Json中UserID的值
var userID = UserList[i].UserID;
// 配置用于显示的List模板列
var list = [ " Name.FirstName " , " Name.LastName " ];
// 判断第一列的td值是否与UserID的相对应
if (tdFirstTxt == userID) {
// 循环List模板列
$.each(list, function (j) {
// 使用eval用于数组对象转换成JSon的对象。
var element = eval( " UserList[i]. " + list[j]);
// 动态添加列,element为动态配置(所属第一列值)其他的值
tr.append( " <td> " + element + " </td> " );
});
}
});
});
< / script>
显示最终画面
Oh,还有有关于从后台生成数据转换JSON可以参见JSON IN Code.