ReportViewer2010冻结行列

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NewTrackingVer.aspx.cs"

 2     Inherits="GeoOilRes.RDLC.NewTrackingVer" %>

 3 

 4 <%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

 5     Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>

 6 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 7 <html xmlns="http://www.w3.org/1999/xhtml">

 8 <head id="Head1" runat="server">

 9     <title></title>

10     <script src="../../Scripts/jquery-1.8.1.min.js" type="text/javascript"></script>

11     <script src="../Scripts/rdlc-function.js" type="text/javascript"></script>

12     <script type="text/javascript">

13            $(function () {

14             var ReportTable = $('#VisibleReportContentReportViewer1_ctl10');

15             if (ReportTable.html().length > 0 ) {

16                 var w = pageWidth();

17                 var h = pageHeight();

18                 var tableID = "RdlcTable";

19                 $('#VisibleReportContentReportViewer1_ctl10 table table table table:last').attr("ID", tableID);

20                 freezeTable(tableID, 5, 4, w, h);

21                 var flag = false;

22                 $(window).resize(function () {

23                     if (flag)

24                         return;

25                     setTimeout(function () {

26                         adjustTableSize(tableID, w, h);

27                         flag = false;

28                     }, 100);

29                     flag = true;

30                 });

31             }

32         });

33 </script>

34 </head>

35 <body style="padding: 0; margin: 0; overflow: hidden; background-color: white;">

36     <form id="form1" runat="server" style="text-align: left;">

37     <asp:ScriptManager ID="ScriptManager1" runat="server">

38     </asp:ScriptManager>           <asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Inline">

39         <ContentTemplate>

40             <rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt"

41                 InteractiveDeviceInfos="(集合)" WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt"

42                 Width="100%" Height="100%" ShowToolBar="true" ShowBackButton="False" ShowFindControls="False"

43                 ShowRefreshButton="False" HyperlinkTarget="_self">

44             </rsweb:ReportViewer>

45         </ContentTemplate>

46         <Triggers>

47             <asp:PostBackTrigger ControlID="ReportViewer1" />

48         </Triggers>

49     </asp:UpdatePanel>

50     </form>

51     </body>

52 </html>
  1 /*

  2 * 锁定表头和列

  3 * 

  4 * 参数定义

  5 *     table - 要锁定的表格元素或者表格ID

  6 *     freezeRowNum - 要锁定的前几行行数,如果行不锁定,则设置为0

  7 *     freezeColumnNum - 要锁定的前几列列数,如果列不锁定,则设置为0

  8 *     width - 表格的滚动区域宽度

  9 *     height - 表格的滚动区域高度

 10 */

 11 function freezeTable(table, freezeRowNum, freezeColumnNum, width, height) {

 12     freezeRowNum += 1;

 13     freezeColumnNum += 1;

 14     if (typeof (freezeRowNum) == 'string')

 15         freezeRowNum = parseInt(freezeRowNum)

 16 

 17     if (typeof (freezeColumnNum) == 'string')

 18         freezeColumnNum = parseInt(freezeColumnNum)

 19 

 20     var tableId;

 21     if (typeof (table) == 'string') {

 22         tableId = table;

 23         table = $('#' + tableId);

 24     } else

 25         tableId = table.attr('id');

 26 

 27     var divTableLayout = $("#" + tableId + "_tableLayout");

 28 

 29     if (divTableLayout.length != 0) {

 30         divTableLayout.before(table);

 31         divTableLayout.empty();

 32     } else {

 33         table.after("<div id='" + tableId + "_tableLayout' style='overflow:hidden;height:" + height + "px; width:" + width + "px;'></div>");

 34 

 35         divTableLayout = $("#" + tableId + "_tableLayout");

 36     }

 37 

 38     var html = '';

 39     if (freezeRowNum > 0 && freezeColumnNum > 0)

 40         html += '<div id="' + tableId + '_tableFix" style="padding: 0px;"></div>';

 41 

 42     if (freezeRowNum > 0)

 43         html += '<div id="' + tableId + '_tableHead" style="padding: 0px;"></div>';

 44 

 45     if (freezeColumnNum > 0)

 46         html += '<div id="' + tableId + '_tableColumn" style="padding: 0px;"></div>';

 47 

 48     html += '<div id="' + tableId + '_tableData" style="padding: 0px;"></div>';

 49 

 50 

 51     $(html).appendTo("#" + tableId + "_tableLayout");

 52 

 53     var divTableFix = freezeRowNum > 0 && freezeColumnNum > 0 ? $("#" + tableId + "_tableFix") : null;

 54     var divTableHead = freezeRowNum > 0 ? $("#" + tableId + "_tableHead") : null;

 55     var divTableColumn = freezeColumnNum > 0 ? $("#" + tableId + "_tableColumn") : null;

 56     var divTableData = $("#" + tableId + "_tableData");

 57 

 58     divTableData.append(table);

 59 

 60     if (divTableFix != null) {

 61         var tableFixClone = table.clone(true);

 62         tableFixClone.attr("id", tableId + "_tableFixClone");

 63         divTableFix.append(tableFixClone);

 64     }

 65 

 66     if (divTableHead != null) {

 67         var tableHeadClone = table.clone(true);

 68         tableHeadClone.attr("id", tableId + "_tableHeadClone");

 69         divTableHead.append(tableHeadClone);

 70     }

 71 

 72     if (divTableColumn != null) {

 73         var tableColumnClone = table.clone(true);

 74         tableColumnClone.attr("id", tableId + "_tableColumnClone");

 75         divTableColumn.append(tableColumnClone);

 76     }

 77 

 78     $("#" + tableId + "_tableLayout table").css("margin", "0");

 79 

 80     if (freezeRowNum > 0) {

 81         var HeadHeight = 0;

 82         var ignoreRowNum = 0;

 83         $("#" + tableId + "_tableHead tr:lt(" + freezeRowNum + ")").each(function () {

 84             if (ignoreRowNum > 0)

 85                 ignoreRowNum--;

 86             else {

 87                 var td = $(this).find('td:first, th:first');

 88                 HeadHeight += td.outerHeight(true);

 89 

 90                 ignoreRowNum = td.attr('rowSpan');

 91                 if (typeof (ignoreRowNum) == 'undefined')

 92                     ignoreRowNum = 0;

 93                 else

 94                     ignoreRowNum = parseInt(ignoreRowNum) - 1;

 95             }

 96         });

 97         HeadHeight += 2;

 98 

 99         divTableHead.css("height", HeadHeight);

100         divTableFix != null && divTableFix.css("height", HeadHeight);

101     }

102 

103     if (freezeColumnNum > 0) {

104         var ColumnsWidth = 0;

105         var ColumnsNumber = 0;

106         $("#" + tableId + "_tableColumn tr:eq(" + freezeRowNum + ")").find("td:lt(" + freezeColumnNum + "), th:lt(" + freezeColumnNum + ")").each(function () {

107             if (ColumnsNumber >= freezeColumnNum)

108                 return;

109 

110             ColumnsWidth += $(this).outerWidth(true);

111 

112             ColumnsNumber += $(this).attr('colSpan') ? parseInt($(this).attr('colSpan')) : 1;

113         });

114         ColumnsWidth += 2;

115 

116         divTableColumn.css("width", ColumnsWidth);

117         divTableFix != null && divTableFix.css("width", ColumnsWidth);

118     }

119 

120     divTableData.scroll(function () {

121         divTableHead != null && divTableHead.scrollLeft(divTableData.scrollLeft());

122 

123         divTableColumn != null && divTableColumn.scrollTop(divTableData.scrollTop());

124     });

125 

126     divTableFix != null && divTableFix.css({ "overflow": "hidden", "background-color": "white", "position": "absolute", "z-index": "50" });

127     divTableHead != null && divTableHead.css({ "overflow": "hidden", "background-color": "white", "width": width - 17, "position": "absolute", "z-index": "45" });

128     divTableColumn != null && divTableColumn.css({ "overflow": "hidden", "background-color": "white", "height": height - 17, "position": "absolute", "z-index": "40" });

129     divTableData.css({ "overflow": "scroll", "width": width, "height": height, "position": "absolute" });

130 

131     divTableFix != null && divTableFix.offset(divTableLayout.offset());

132     divTableHead != null && divTableHead.offset(divTableLayout.offset());

133     divTableColumn != null && divTableColumn.offset(divTableLayout.offset());

134     divTableData.offset(divTableLayout.offset());

135 }

136 

137 /*

138 * 调整锁定表的宽度和高度,这个函数在resize事件中调用

139 * 

140 * 参数定义

141 *     table - 要锁定的表格元素或者表格ID

142 *     width - 表格的滚动区域宽度

143 *     height - 表格的滚动区域高度

144 */

145 function adjustTableSize(table, width, height) {

146     var tableId;

147     if (typeof (table) == 'string')

148         tableId = table;

149     else

150         tableId = table.attr('id');

151 

152     $("#" + tableId + "_tableLayout").width(width).height(height);

153     $("#" + tableId + "_tableHead").width(width - 17);

154     $("#" + tableId + "_tableColumn").height(height - 17);

155     $("#" + tableId + "_tableData").width(width).height(height);

156 }

157 

158 function pageHeight() {

159     if ($.browser.msie) {

160         return document.compatMode == "CSS1Compat" ? document.documentElement.clientHeight : document.body.clientHeight;

161     } else {

162         return self.innerHeight;

163     }

164 };

165 

166 //返回当前页面宽度

167 function pageWidth() {

168     if ($.browser.msie) {

169         return document.compatMode == "CSS1Compat" ? document.documentElement.clientWidth : document.body.clientWidth;

170     } else {

171         return self.innerWidth;

172     }

173 };

 

你可能感兴趣的:(view)