首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

RDLC报表WEB页面中斜线消失之解决办法

2012-02-19 
【原创】RDLC报表WEB页面中斜线消失之解决方法本来自己时间也不多,不过看了《鬱悶,在CSDN上提的問就重來沒有

【原创】RDLC报表WEB页面中斜线消失之解决方法
本来自己时间也不多,不过看了
《鬱悶,在CSDN上提的問就重來沒有人給過一個滿意答案的》
这个帖子
还是花点时间做做,只处理里面的第一种情况,做个样板。莫让人说我天朝无人。


版本:VS2005

使用水晶报表的人经常会感慨,这么强的报表工具,连个斜线也没有,太不可理解了。
就这么个小效果,折腾坏不少人。
而VS2005里的RDLC工具,是有斜线的,但是当放到WEB应用时,模板上画得好好的,运行起来后,斜线消失了?


简单分析一下HTML代码

HTML code
<DIV style="overflow:auto;HEIGHT:100%;WIDTH:100%" ID="oReportDiv" onscroll="ShowFixedHeaders()"onresize="ShowFixedHeaders()">    <TABLE CELLSPACING="0" CELLPADDING="0">        <TR>            <TD ID="oReportCell" onpropertychange="ShowFixedHeaders()">                <DIV class="a1">                    <TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0" COLS="12" LANG="zh-CN"                    class="r10">                        <TR>                            <TD style="HEIGHT:10.00mm;WIDTH:25.00mm">                            </TD>                            <TD style="WIDTH:5.00mm">                            </TD>                            <TD style="WIDTH:7.50mm">                            </TD>                            <TD style="WIDTH:2.50mm">                            </TD>                            <TD style="WIDTH:5.00mm">                            </TD>                            <TD style="WIDTH:37.69mm">                            </TD>                            <TD style="WIDTH:9.93mm">                            </TD>                            <TD style="WIDTH:4.88mm">                            </TD>                            <TD style="WIDTH:2.55mm">                            </TD>                            <TD style="WIDTH:12.45mm">                            </TD>                            <TD style="WIDTH:22.51mm">                            </TD>                            <TD style="WIDTH:24.95mm">                            </TD>                        </TR>                        <TR VALIGN="top">                            <TD COLSPAN="5" style="HEIGHT:2.50mm">                            </TD>                            <TD ROWSPAN="3" COLSPAN="2">                                <v:group coordsize="100,100" coordorigin="0,0" style="WIDTH:47.62mm;HEIGHT:19.84mm">                                    <v:line from="0,0" to="100,100" strokecolor="#0" strokeWeight="1pt">                                        <v:stroke dashstyle="solid" />                                    </v:line>                                </v:group>                            </TD>                            <TD ROWSPAN="3" COLSPAN="5">                            </TD>                        </TR>                        <TR>                            <TD COLSPAN="5" style="HEIGHT:12.50mm">                            </TD>                        </TR>                        <TR>                            <TD COLSPAN="5" style="HEIGHT:4.84mm">                            </TD>                        </TR>                        <TR>                            <TD COLSPAN="12" style="HEIGHT:5.16mm">                            </TD>                        </TR>                        <TR VALIGN="top">                            <TD COLSPAN="2" style="HEIGHT:10.00mm">                            </TD>                            <TD COLSPAN="8">                                <TABLE CELLSPACING="0" CELLPADDING="0" LANG="zh-CN">                                    <TR>                                        <TD style="WIDTH:82.54mm;word-wrap:break-word;HEIGHT:10.00mm;" class="a8">                                            xxxx                                        </TD>                                    </TR>                                </TABLE>                            </TD>                            <TD COLSPAN="2">                            </TD>                        </TR>                        <TR>                            <TD COLSPAN="12" style="HEIGHT:5.00mm">                            </TD>                        </TR>                        <TR>                            <TD style="HEIGHT:12.54mm">                            </TD>                            <TD COLSPAN="10" style="border-width:0px;border-top:1pt Solid Black">                            </TD>                            <TD>                            </TD>                        </TR>                        <TR VALIGN="top">                            <TD COLSPAN="4" style="HEIGHT:9.88mm">                            </TD>                            <TD ROWSPAN="2" COLSPAN="5">                                <v:group coordsize="100,100" coordorigin="0,0" style="WIDTH:60.05mm;HEIGHT:17.46mm">                                    <v:line from="0,100" to="100,0" strokecolor="#0" strokeWeight="1pt">                                        <v:stroke dashstyle="solid" />                                    </v:line>                                </v:group>                            </TD>                            <TD ROWSPAN="2" COLSPAN="3">                            </TD>                        </TR>                        <TR>                            <TD COLSPAN="4" style="HEIGHT:7.58mm">                            </TD>                        </TR>                        <TR>                            <TD COLSPAN="12" style="HEIGHT:7.50mm">                            </TD>                        </TR>                        <TR>                            <TD COLSPAN="12" style="HEIGHT:30.00mm">                            </TD>                        </TR>                    </TABLE>                </DIV>            </TD>            <TD WIDTH="100%" HEIGHT="0">            </TD>        </TR>        <TR>            <TD WIDTH="0" HEIGHT="100%">            </TD>        </TR>    </TABLE></DIV> 



我们看到线是用VML来绘制的
 
XML code
 <v:group coordsize="100,100" coordorigin="0,0" style="WIDTH:47.62mm;HEIGHT:19.84mm">                                    <v:line from="0,0" to="100,100" strokecolor="#0" strokeWeight="1pt">                                        <v:stroke dashstyle="solid" />                                    </v:line>                                </v:group>


但是,页面上却少了让页面解析VML标签的声明
v\:* {behavior:url(#default#VML);}

于是解决思路就有了,主动在页面上附加上这个声明。
实际做起来就比较复杂,因为表面上RDLC页面是内嵌了一个iframe,实际上套了frame后又嵌了个iframe.
反正挺折腾人,解决方法如下:

1:新建一个x.css,放在同目录下
内容为:v\:* {behavior:url(#default#VML);}

2:在aspx的html模式下,加上如下代码即可。


JScript code
<script language="javascript" type="text/javascript">try{var oWindow = document.getElementById('ReportFrameReportViewer1').contentWindow ;var oHead=oWindow.document.getElementsByTagName('frame')[1].contentWindow.document.getElementsByTagName('head').item(0);var cssRef=oWindow.document.getElementsByTagName('frame')[1].contentWindow.document.createElement("link"); cssRef.setAttribute("rel", "stylesheet") ;cssRef.setAttribute("type", "text/css");cssRef.setAttribute("href", "x.css");oHead.appendChild(cssRef);oWindow.document.getElementsByTagName('frame')[1].contentWindow.document.body.innerHTML=oWindow.document.getElementsByTagName('frame')[1].contentWindow.document.body.innerHTML;}catch (err){}</script>


加上这个后,发现了另外一个问题,就是如果线有交叉,那么就只显示一条。
比如我们的模板是这样的(图比较丑,只是做个示例)

显示出来的效果是这样的


模板有4条斜线,实际上只显示了两条。
而他的HTML 代码就是本文最开始的那段。
明显是少了两条,经过试验,如果两条线有交叉
(不一定是视觉上的交叉,
交叉应该是以一条线为对角线,所在的矩形,与另一矩形有任何的交叉,都将会只显示一个矩形)




[解决办法]
顶,好贴。
[解决办法]
学习
[解决办法]

[解决办法]
超强
[解决办法]
好东西....
[解决办法]
up
[解决办法]
又见 阿泰


赞一个!一直做WinFrom下的客户端RDLC,WEB的么搞过!
[解决办法]
强悍!!!
[解决办法]
看看
[解决办法]
拿分走人 !!!
[解决办法]
学习 ,接分。。
[解决办法]
顶一下~~好
[解决办法]
1 前面用css进行解析,显示斜线,很好
2 后面交叉线只显示一条,如何处理,没有说明
[解决办法]
http://www.zhengdus.com
[解决办法]
study
[解决办法]
haode sa


[解决办法]

不是很明白~呵呵~
[解决办法]
MARK!太深奥了~
[解决办法]
强烈的顶!
[解决办法]
学习了,顶
[解决办法]
路过拿分
[解决办法]
学习
[解决办法]
abc
[解决办法]
good
[解决办法]
study
[解决办法]
hao
[解决办法]
操,阿泰,爱死你了
接着收藏
[解决办法]
了解一下
[解决办法]
UP
[解决办法]


//VS2005里的RDLC工具,是有斜线的

请问,VS2005自带水晶报表,这个rpt文件可以画斜线么?
[解决办法]
支持一下
[解决办法]
学习
[解决办法]
牛人.
[解决办法]
學習了,,,,,,,,,,,,,,
[解决办法]
前来做个记号
[解决办法]
学习一下
[解决办法]
回帖是一种美德!每天回帖即可获得 10 分可用分!
[解决办法]
好东西

[解决办法]

引用楼主 babyt 的帖子:
本来自己时间也不多,不过看了
《鬱悶,在CSDN上提的問就重來沒有人給過一個滿意答案的》
这个帖子
还是花点时间做做,只处理里面的第一种情况,做个样板。莫让人说我天朝无人。

[解决办法]
顶一下...救急用的,非常感谢!
[解决办法]
up a
[解决办法]
狂顶

mark
[解决办法]
呵呵,不错.看谁小看俺们天朝人
[解决办法]
kuang a
[解决办法]
高人,佩服得五體投地呀!
[解决办法]
泰哥,過來我的貼裡接個分吶
[解决办法]
强人,不顶不行
[解决办法]
小頂一下,雖然不是很明白,慢慢看!
[解决办法]
不属于天朝的小菜鸟掩面飘过……
[解决办法]
学习了,不是很明白。


[解决办法]
进来拜一拜强人!!
[解决办法]
楼主辛苦了
[解决办法]
不懂 帮顶
[解决办法]
强人!!!!!!
[解决办法]
原来csdn有人,呵呵,赞楼主.
[解决办法]
拜天朝大人。。。小民受教鸟。。。
[解决办法]
过来凑凑热闹
[解决办法]
up
[解决办法]
学习学习!

热点排行