嵌套Repeater内的统计问题

暖枫无敌
博客专家认证
2011-01-23 11:55:45
首先看图:

说明:
1、前三列在第一层Repeater里绑定,后面的N列在第二层Repeater里绑定。
2、第二层Repeater里的四行数据,是平级的。
3、结构层次如下:
<asp:Repeater ID="rpt1" runat="server" OnItemDataBound="rpt1_ItemDataBound">
<HeadTemplate>
<table>
</HeadTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("v1")%></td>
<td><%#Eval("v2")%></td>
<td><%#Eval("v3")%></td>
<td colspan="35">
<table>
<tr>
<td colspan="35" >
<asp:Repeater ID="rpt2" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>...</td>
...
</tr>
</ItemTemplate>
</FootTemplate>
</table>
</FootTemplate>
</asp:Repeater>
</td>
</tr>

<tr>
<td colspan="35" >
<asp:Repeater ID="rpt3" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>...</td>
...
</tr>
</ItemTemplate>
</FootTemplate>
</table>
</FootTemplate>
</asp:Repeater>
</td>
</tr>

<tr>
<td colspan="35" >
<asp:Repeater ID="rpt4" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>...</td>
...
</tr>
</ItemTemplate>
</FootTemplate>
</table>
</FootTemplate>
</asp:Repeater>
</td>
</tr>

<tr>
<td colspan="35" >
<asp:Repeater ID="rpt5" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Container.DataItem%> </td>
...
<td><%#????????%> </td>
</tr>
</ItemTemplate>
</FootTemplate>
</table>
</FootTemplate>
</asp:Repeater>
</td>
</tr>

</table>
</td>
</tr>
</ItemTemplate>
嵌套Repeater内的4个不同颜色块是四个tr区域,前三个绑定数据没问题,但是第四个的话,数据要是第三个/第二个取得的百分比数。


我现在想到的办法是,将嵌套内的第二个和第三个Repeater值分别取出来,然后计算将值绑定在一个ArrayList中,再把它作为第四个Repeater的数据源。

第四个Repeater内的td里通过<%#Container.DataItem%>可以获取ArrayList数据,但是现在问题是,第四个Repeater内有很多个td,后面其他的td怎么处理?

麻烦高手们帮忙看看,有什么解决办法,或是有其他什么更好的建议,谢谢!
...全文
146 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
暖枫无敌 2011-01-26
  • 打赏
  • 举报
回复

--百分比视图
drop view v_MB_Prog_v3;
create view v_MB_Prog_v3
(
c_proj_id,
c_proj_year,
c_zonename,
c_proj_c33,
c_year,
c_proj_fsum,
c_proj_f1,
c_proj_f2,
c_proj_f3_4,
c_proj_f5,
c_proj_f6,
c_proj_f7,
c_proj_f11,
c_proj_c39,
c_proj_c18,
c_proj_c11,
c_proj_c12,
c_proj_c40,
c_proj_c24_25,
c_proj_c1_2,
c_proj_c9_10,
c_proj_c3_4,
c_proj_c41,
c_proj_c16,
c_proj_c17,
c_proj_c42,
c_proj_c27,
c_proj_c28,
c_proj_c29,
c_proj_c30,
c_proj_c43,
c_proj_c44,
c_proj_c31,
c_proj_c32,
c_proj_c45,
c_proj_c26,
c_proj_c20,
c_proj_c21,
c_proj_c23,
c_proj_c46,
bz,s1,s2,
bdt,
edt,
yssj,
c_proj_c48,
c_proj_c49,
c_proj_c50,
cysj,
c_proj_c51,
c_proj_c52,
c_proj_b4,
c_proj_b5,
c_proj_b8,
c_proj_b9,
c_proj_b10
)
as
select
v_MB_Prog_v2.c_proj_id,
v_MB_Prog_v2.c_proj_year,
v_MB_Prog_v2.c_zonename,
v_MB_Prog_v2.c_proj_c33,
v_MB_Prog_v2.c_year,
isnull(round(v_MB_Prog_v2.c_proj_fsum/nullif(v_MB_Prog_v1.c_proj_fsum*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_f1/nullif(v_MB_Prog_v1.c_proj_f1*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_f2/nullif(v_MB_Prog_v1.c_proj_f2*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_f3_4/nullif(v_MB_Prog_v1.c_proj_f3_4*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_f5/nullif(v_MB_Prog_v1.c_proj_f5*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_f6/nullif(v_MB_Prog_v1.c_proj_f6*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_f7/nullif(v_MB_Prog_v1.c_proj_f7*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_f11/nullif(v_MB_Prog_v1.c_proj_f11*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c39/nullif(v_MB_Prog_v1.c_proj_c39*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c18/nullif(v_MB_Prog_v1.c_proj_c18*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c11/nullif(v_MB_Prog_v1.c_proj_c11*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c12/nullif(v_MB_Prog_v1.c_proj_c12*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c40/nullif(v_MB_Prog_v1.c_proj_c40*100,0),0),0),

isnull(round(v_MB_Prog_v2.c_proj_c24_25/nullif(v_MB_Prog_v1.c_proj_c24_25*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c1_2/nullif(v_MB_Prog_v1.c_proj_c1_2*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c9_10/nullif(v_MB_Prog_v1.c_proj_c9_10*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c3_4/nullif(v_MB_Prog_v1.c_proj_c3_4*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c41/nullif(v_MB_Prog_v1.c_proj_c41*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c16/nullif(v_MB_Prog_v1.c_proj_c16*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c17/nullif(v_MB_Prog_v1.c_proj_c17*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c42/nullif(v_MB_Prog_v1.c_proj_c42*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c27/nullif(v_MB_Prog_v1.c_proj_c27*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c28/nullif(v_MB_Prog_v1.c_proj_c28*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c29/nullif(v_MB_Prog_v1.c_proj_c29*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c30/nullif(v_MB_Prog_v1.c_proj_c30*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c43/nullif(v_MB_Prog_v1.c_proj_c43*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c44/nullif(v_MB_Prog_v1.c_proj_c44*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c31/nullif(v_MB_Prog_v1.c_proj_c31*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c32/nullif(v_MB_Prog_v1.c_proj_c32*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c45/nullif(v_MB_Prog_v1.c_proj_c45*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c26/nullif(v_MB_Prog_v1.c_proj_c26*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c20/nullif(v_MB_Prog_v1.c_proj_c20*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c21/nullif(v_MB_Prog_v1.c_proj_c21*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c23/nullif(v_MB_Prog_v1.c_proj_c23*100,0),0),0),
isnull(round(v_MB_Prog_v2.c_proj_c46/nullif(v_MB_Prog_v1.c_proj_c46*100,0),0),0),
'4',
(select proj_type from mb_proj where mb_proj.proj_id = v_MB_Prog_v1.c_proj_id) ,
(select proj_pc from mb_proj where mb_proj.proj_id = v_MB_Prog_v1.c_proj_id) ,
v_MB_Prog_v2.bdt,
v_MB_Prog_v2.edt,
v_MB_Prog_v2.yssj,
v_MB_Prog_v2.c_proj_c48,
v_MB_Prog_v2.c_proj_c49,
v_MB_Prog_v2.c_proj_c50,
v_MB_Prog_v2.cysj,
v_MB_Prog_v2.c_proj_c51,
v_MB_Prog_v2.c_proj_c52,
v_MB_Prog_v2.c_proj_b4,
v_MB_Prog_v2.c_proj_b5,
v_MB_Prog_v2.c_proj_b8,
v_MB_Prog_v2.c_proj_b9,
v_MB_Prog_v2.c_proj_b10
from v_MB_Prog_v1,v_MB_Prog_v2
where v_MB_Prog_v1.c_proj_id = v_MB_Prog_v2.c_proj_id and v_MB_Prog_v1.c_year=v_MB_Prog_v2.c_year and v_MB_Prog_v1.bz=2

select * from v_mb_prog_v3;

--视图四
drop view v_mb_prog_v4;
create view v_MB_Prog_v4
(
c_proj_id,
c_proj_year,
c_zonename,
c_proj_c33,
c_year,
c_proj_fsum,
c_proj_f1,
c_proj_f2,
c_proj_f3_4,
c_proj_f5,
c_proj_f6,
c_proj_f7,
c_proj_f11,
c_proj_c39,
c_proj_c18,
c_proj_c11,
c_proj_c12,
c_proj_c40,
c_proj_c24_25,
c_proj_c1_2,
c_proj_c9_10,
c_proj_c3_4,
c_proj_c41,
c_proj_c16,
c_proj_c17,
c_proj_c42,
c_proj_c27,
c_proj_c28,
c_proj_c29,
c_proj_c30,
c_proj_c43,
c_proj_c44,
c_proj_c31,
c_proj_c32,
c_proj_c45,
c_proj_c26,
c_proj_c20,
c_proj_c21,
c_proj_c23,
c_proj_c46,
bz,s1,s2,
bdt,
edt,
yssj,
c_proj_c48,
c_proj_c49,
c_proj_c50,
cysj,
c_proj_c51,
c_proj_c52,
c_proj_b4,
c_proj_b5,
c_proj_b8,
c_proj_b9,
c_proj_b10
)
as

select * from v_mb_prog_v1

union all
select * from v_MB_Prog_v2

union all
select * from v_MB_Prog_v3

select * from v_mb_prog_v4;
暖枫无敌 2011-01-26
  • 打赏
  • 举报
回复
终于还是做出来了,联合多表,做成视图,内层Repeater用一个Repeater实现了。

贴出视图SQL代码:

--视图一 获取固有信息里的统计字段
drop view v_MB_Prog_v1;
create view v_MB_Prog_v1
(
c_proj_id,
c_proj_year,
c_zonename,
c_proj_c33,
c_year,
c_proj_fsum,
c_proj_f1,
c_proj_f2,
c_proj_f3_4,
c_proj_f5,
c_proj_f6,
c_proj_f7,
c_proj_f11,
c_proj_c39,
c_proj_c18,
c_proj_c11,
c_proj_c12,
c_proj_c40,
c_proj_c24_25,
c_proj_c1_2,
c_proj_c9_10,
c_proj_c3_4,
c_proj_c41,
c_proj_c16,
c_proj_c17,
c_proj_c42,
c_proj_c27,
c_proj_c28,
c_proj_c29,
c_proj_c30,
c_proj_c43,
c_proj_c44,
c_proj_c31,
c_proj_c32,
c_proj_c45,
c_proj_c26,
c_proj_c20,
c_proj_c21,
c_proj_c23,
c_proj_c46,
bz,
s1,
s2,
bdt,
edt,
yssj,
c_proj_c48,
c_proj_c49,
c_proj_c50,
cysj,
c_proj_c51,
c_proj_c52,
c_proj_b4,
c_proj_b5,
c_proj_b8,
c_proj_b9,
c_proj_b10
)
as
select
c_proj_id,
c_proj_year,
c_zonename,
c_proj_c33,
case c_proj_typeinfo
when '1' then CAST ( c_proj_year AS int ) + 2
when '2' then CAST ( c_proj_year AS int )
when '3' then CAST ( c_proj_year AS int )
when '4' then CAST ( c_proj_year AS int ) + 1
when '5' then CAST ( c_proj_year AS int ) + 1
when '6' then CAST ( c_proj_year AS int ) + 2
when '7' then CAST ( c_proj_year AS int ) + 2
end ,
isnull(c_proj_f1+c_proj_f2+c_proj_f3+c_proj_f4+c_proj_f5+c_proj_f6+c_proj_f7,0) as c_proj_fsum,
isnull(c_proj_f1,0) as c_proj_f1,
isnull(c_proj_f2,0) as c_proj_f2,
isnull(c_proj_f3+c_proj_f4,0) as c_proj_f3_4,
isnull(c_proj_f5,0) as c_proj_f5,
isnull(c_proj_f6,0) as c_proj_f6,
isnull(c_proj_f7,0) as c_proj_f7,
isnull(c_proj_f11,0) as c_proj_f11,
isnull(c_proj_c39,0) as c_proj_c39 ,
isnull(c_proj_c18,0) as c_proj_c18,
isnull(c_proj_c11,0) as c_proj_c11,
isnull(c_proj_c12,0) as c_proj_c12,
isnull(c_proj_c40,0) as c_proj_c40,
isnull(c_proj_c24+c_proj_c25,0) as c_proj_c24_25,
isnull(c_proj_c1+c_proj_c2,0) as c_proj_c1_2,
isnull(c_proj_c9+c_proj_c10,0) as c_proj_cf9_10,
isnull(c_proj_c3+c_proj_c4,0) as c_proj_c3_4,
isnull(c_proj_c41,0) as c_proj_c41,
isnull(c_proj_c16,0) as c_proj_c16,
isnull(c_proj_c17,0) as c_proj_c17,
isnull(c_proj_c42,0) as c_proj_c42,
isnull(c_proj_c27,0) as c_proj_c27,
isnull(c_proj_c28,0) as c_proj_c28,
isnull(c_proj_c29,0) as c_proj_c29,
isnull(c_proj_c30,0) as c_proj_c30,
isnull(c_proj_c43,0) as c_proj_c43,
isnull(c_proj_c44,0) as c_proj_c44,
isnull(c_proj_c31,0) as c_proj_c31,
isnull(c_proj_c32,0) as c_proj_c32,
isnull(c_proj_c45,0) as c_proj_c45,
isnull(c_proj_c26,0) as c_proj_c26,
isnull(c_proj_c20,0) as c_proj_c20,
isnull(c_proj_c21,0) as c_proj_c21,
isnull(c_proj_c23,0) as c_proj_c23,
isnull(c_proj_c46,0) as c_proj_c46,

(case c_proj_typeinfo
when '2' then 1
when '3' then 2
when '4' then 1
when '5' then 2
when '6' then 1
when '7' then 2
else 0
end),
(select proj_type from mb_proj where mb_proj.proj_id = MB_Prog_GYXX.c_proj_id) ,
(select proj_pc from mb_proj where mb_proj.proj_id = MB_Prog_GYXX.c_proj_id),
(select c_bdt from mb_proj where mb_proj.proj_id = MB_Prog_GYXX.c_proj_id),
(select c_edt from mb_proj where mb_proj.proj_id = MB_Prog_GYXX.c_proj_id),
yssj,
c_proj_c48,
c_proj_c49,
c_proj_c50,
cysj,
c_proj_c51,
c_proj_c52,
c_proj_b4,
c_proj_b5,
c_proj_b8,
c_proj_b9,
c_proj_b10
from MB_Prog_GYXX

select * from v_MB_Prog_v1;

drop view v_mb_prog_v2;
create view v_MB_Prog_v2
(
c_proj_id,
c_proj_year,
c_zonename,
c_proj_c33,
c_year,
c_proj_fsum,
c_proj_f1,
c_proj_f2,
c_proj_f3_4,
c_proj_f5,
c_proj_f6,
c_proj_f7,
c_proj_f11,
c_proj_c39,
c_proj_c18,
c_proj_c11,
c_proj_c12,
c_proj_c40,
c_proj_c24_25,
c_proj_c1_2,
c_proj_c9_10,
c_proj_c3_4,
c_proj_c41,
c_proj_c16,
c_proj_c17,
c_proj_c42,
c_proj_c27,
c_proj_c28,
c_proj_c29,
c_proj_c30,
c_proj_c43,
c_proj_c44,
c_proj_c31,
c_proj_c32,
c_proj_c45,
c_proj_c26,
c_proj_c20,
c_proj_c21,
c_proj_c23,
c_proj_c46,
bz,s1,s2,
bdt,
edt,
yssj,
c_proj_c48,
c_proj_c49,
c_proj_c50,
cysj,
c_proj_c51,
c_proj_c52,
c_proj_b4,
c_proj_b5,
c_proj_b8,
c_proj_b9,
c_proj_b10
)
as
select
t1.c_proj_id,
t1.c_proj_year,
t1.c_zonename,
t1.c_proj_c33,
year(t1.c_dt) as c_year,
isnull(t1.c_proj_f1+t1.c_proj_f2+t1.c_proj_f3+t1.c_proj_f4+t1.c_proj_f5+t1.c_proj_f6+t1.c_proj_f7,0) as c_proj_fsum,
isnull(t1.c_proj_f1,0) as c_proj_f1,
isnull(t1.c_proj_f2,0) as c_proj_f2,
isnull(t1.c_proj_f3+t1.c_proj_f4,0) as c_proj_f3_4,
isnull(t1.c_proj_f5,0) as c_proj_f5,
isnull(t1.c_proj_f6,0) as c_proj_f6,
isnull(t1.c_proj_f7,0) as c_proj_f7,
isnull(t1.c_proj_f11,0) as c_proj_f11,
isnull(t1.c_proj_c39,0) as c_proj_c39 ,
isnull(t1.c_proj_c18,0) as c_proj_c18,
isnull(t1.c_proj_c11,0) as c_proj_c11,
isnull(t1.c_proj_c12,0) as c_proj_c12,
isnull(t1.c_proj_c40,0) as c_proj_c40,
isnull(t1.c_proj_c24+t1.c_proj_c25,0) as c_proj_c24_25,
isnull(t1.c_proj_c1+t1.c_proj_c2,0) as c_proj_c1_2,
isnull(t1.c_proj_c9+t1.c_proj_c10,0) as c_proj_cf9_10,
isnull(t1.c_proj_c3+t1.c_proj_c4,0) as c_proj_c3_4,
isnull(t1.c_proj_c41,0) as c_proj_c41,
isnull(t1.c_proj_c16,0) as c_proj_c16,
isnull(t1.c_proj_c17,0) as c_proj_c17,
isnull(t1.c_proj_c42,0) as c_proj_c42,
isnull(t1.c_proj_c27,0) as c_proj_c27,
isnull(t1.c_proj_c28,0) as c_proj_c28,
isnull(t1.c_proj_c29,0) as c_proj_c29,
isnull(t1.c_proj_c30,0) as c_proj_c30,
isnull(t1.c_proj_c43,0) as c_proj_c43,
isnull(t1.c_proj_c44,0) as c_proj_c44,
isnull(t1.c_proj_c31,0) as c_proj_c31,
isnull(t1.c_proj_c32,0) as c_proj_c32,
isnull(t1.c_proj_c45,0) as c_proj_c45,
isnull(t1.c_proj_c26,0) as c_proj_c26,
isnull(t1.c_proj_c20,0) as c_proj_c20,
isnull(t1.c_proj_c21,0) as c_proj_c21,
isnull(t1.c_proj_c23,0) as c_proj_c23,
isnull(t1.c_proj_c46,0) as c_proj_c46,
'3',
(select proj_type from mb_proj where mb_proj.proj_id = t1.c_proj_id) ,
(select proj_pc from mb_proj where mb_proj.proj_id = t1.c_proj_id),
(select c_bdt from mb_proj where mb_proj.proj_id = t1.c_proj_id) ,
(select c_edt from mb_proj where mb_proj.proj_id = t1.c_proj_id) ,
t1.yssj,
t1.c_proj_c48,
t1.c_proj_c49,
t1.c_proj_c50,
t1.cysj,
t1.c_proj_c51,
t1.c_proj_c52,
t1.c_proj_b4,
t1.c_proj_b5,
t1.c_proj_b8,
t1.c_proj_b9,
t1.c_proj_b10
from mb_prog t1
where c_dt in (select max(t2.c_dt) from mb_prog t2 where t1.c_proj_id=t2.c_proj_id and year(t1.c_dt) = year(t2.c_dt))

select * from v_mb_prog_v2;
子夜__ 2011-01-24
  • 打赏
  • 举报
回复
好困!睡觉了 明儿看!
RHCL 2011-01-24
  • 打赏
  • 举报
回复
感觉上这个表显示的数据形式不用嵌套好点.
建议把可以用linq把查询出来的数据归纳为和"此表格的一行数据作为一个成员"的集合,若数据量不大完全可以在内存里就组装好这个数据源的模型直接使用一个repeat绑定.

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧