62,267
社区成员
发帖
与我相关
我的任务
分享
DataTable dt = (rpt_SelectList.DataSource as DataTable).Copy();//dt即为副表
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="b.aspx.cs" Inherits="b" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<style>
.ptbl{width:400px;background-color:#000}
.ptbl tr{background-color:#fff}
.ptbl td{text-align:center;}
</style>
<script language="javascript" type="text/javascript">
// <!CDATA[
//展开或隐藏函数
function expend(obj,flag)
{
var chld = obj.parentNode.nextSibling;
if(flag=="+")
{
obj.innerText="-";
chld.style.display="block";
}else
{
obj.innerText="+";
chld.style.display="none";
}
}
var arr=[];//存放显示列
//checkbox click事件
function changeCol(ischecked,colIndex)
{
if(ischecked)
{
arr.push(colIndex);
arr.sort();
}else
{
var m = arr.indexOf(colIndex);
delete arr[m];
}
resetChildGrid();
}
//数组查找函数
function Array.prototype.indexOf(val)
{
for(var i=0;i<this.length;i++)
{
if(this[i]==val) return i;
}
return -1;
}
//显示隐藏列
function resetChildGrid()
{
var chldTbls= document.getElementsByTagName("table");
for(var i=0;i<chldTbls.length;i++)
{
if(chldTbls[i].className=="ctbl")
{
for(var j=0;j<chldTbls[i].rows.length;j++)
{
for(var k=0;k<chldTbls[i].rows[j].cells.length;k++)
{
var cell = chldTbls[i].rows[j].cells[k];
cell.style.display=arr.indexOf(k)!=-1?"block":"none";
}
}
}
}
}
//onload初始化存放显示列数组arr
window.onload=function()
{
var chkTbl = document.getElementById("ColumnsNames");
var cells = chkTbl.rows[0].cells;
for(var i=0;i<cells.length;i++)
{
arr.push(i);
}
}
// ]]>
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
自定义列:<asp:CheckBoxList runat="server" ID="ColumnsNames" RepeatDirection="Horizontal"></asp:CheckBoxList>
<asp:Repeater runat="server" ID="RptParent" OnItemDataBound="RptParent_ItemDataBound">
<HeaderTemplate>
<table class="ptbl" cellpadding="0" cellspacing="1">
<tr>
<th width="20px"></th>
<th width="30%">性别</th>
<th width="30%">人数</th>
<th>百分比</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td style="cursor:pointer" onclick="expend(this,this.innerText)">+</td>
<td><%# Convert.ToInt32(Eval("Sex"))==0?"男":"女" %></td>
<td><%# Eval("Peosons")%></td>
<td><%# Eval("percent")%></td>
</tr>
<tr style="display:none">
<td></td>
<td colspan="3">
<asp:Repeater runat="server" ID="RptChld">
<HeaderTemplate>
<table width="100%" class="ctbl">
<tr>
<th>Name</th>
<th>Sex</th>
<th>Age</th>
<th>Address</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr >
<td><%# Eval("Name") %></td>
<td><%# Convert.ToInt32(Eval("Sex"))==0?"男":"女" %></td>
<td><%# Eval("Age") %></td>
<td><%# Eval("Address") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class b : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
this.RptParent.DataSource = this.GroupSource;
this.RptParent.DataBind();
int m = 0;
foreach (DataColumn col in DTLSource.Columns)
{
ListItem list = new ListItem(col.ColumnName);
list.Selected = true;
list.Attributes.Add("onclick", "changeCol(this.checked,'" + m.ToString() + "')");
ColumnsNames.Items.Add(list);
m++;
}
}
}
/// <summary>
/// 汇总
/// </summary>
private DataTable GroupSource
{
get
{
DataTable dt = new DataTable();
dt.Columns.Add("Sex", typeof(int));
dt.Columns.Add("Peosons", typeof(int));
dt.Columns.Add("percent", typeof(string));
dt.Rows.Add(0, 2,"40%");
dt.Rows.Add(1, 3, "60%");
return dt;
}
}
/// <summary>
/// 明细
/// </summary>
private DataTable DTLSource
{
get
{
DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Sex", typeof(int));
dt.Columns.Add("Age", typeof(int));
dt.Columns.Add("Address", typeof(string));
dt.Rows.Add("A1",0,28,"上海");
dt.Rows.Add("A2", 0, 22, "江苏");
dt.Rows.Add("B1", 1, 21, "浙江");
dt.Rows.Add("B2", 1, 22, "山东");
dt.Rows.Add("B3", 1, 27, "广州");
return dt;
}
}
protected void RptParent_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType== ListItemType.AlternatingItem)
{
int sex =(int)((DataRowView)e.Item.DataItem)["Sex"] ;
Repeater chld = e.Item.FindControl("RptChld") as Repeater;
DataView dv = new DataView(this.DTLSource);
dv.Sort = "Sex";
dv.RowFilter = "Sex="+sex.ToString();
chld.DataSource = dv;
chld.DataBind();
}
}
}