日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

EXT.NET复杂布局(二)——报表

發布時間:2023/12/10 asp.net 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EXT.NET复杂布局(二)——报表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前面提到過工作臺(《EXT.NET復雜布局(一)——工作臺》)了,不知道各位看過之后有什么感想。這次就介紹介紹使用EXT.NET畫幾個報表。

看圖寫作從小學就開始了,如圖:

圖一

圖二

圖三(1)

圖三(2)

各位看官,不要以為這報表畫起來很難,其實使用EXT.NET來畫的話,還是挺簡單方便的。

1)下面就從圖一開始。

這個報表實現,本人采用的是最原始的手寫代碼(之所以這么說,是因為沒怎么偷懶,老老實實的寫的,因為這是剛接觸EXT.NET的時候畫的)

先上代碼,然后再說話吧。其實注釋挺全的,所以也不需要說什么話了:

<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %> <style type="text/css">.total-field{background-color: #fff;font-weight: bold !important;color: #000;border: solid 1px silver;padding: 2px;margin-right: 5px;}.headRows1{color: Green;font-weight: bolder;}.headRows2{color: Blue;font-weight: bolder;} </style><script type="text/javascript">function getYear(){return <%=txtYear.ClientID %>.getValue();}function getMonth(){return <%=cboMonth.ClientID %>.getValue();} </script><ext:ResourceManager ID="ResourceManager1" runat="server"> </ext:ResourceManager> <ext:Viewport runat="server" ID="Viewport1" Layout="Fit"><Items><ext:GridPanel ID="GridPanel1" Width="400" Height="230" TrackMouseOver="true" runat="server"StripeRows="true" Title="店鋪狀態統計表" Header="false" AutoExpandColumn="RptId" Frame="true"><Store><ext:Store ID="Store1" ShowWarningOnFailure="false" AutoLoad="false" runat="server"><Proxy><ext:HttpProxy runat="server" Method="POST" Url="/Ajax/Reports.ashx"></ext:HttpProxy></Proxy><Reader><ext:JsonReader IDProperty="RptId" TotalProperty="total" Root="data"><Fields><%--RptId 標識 店鋪狀態統計表--%><ext:RecordField Name="RptId" /><%--報表年份--%><ext:RecordField Name="RptYear" /><%--報表月份--%><ext:RecordField Name="RptMonth" /><%--新概念店目標--%><ext:RecordField Name="TargetNewEntrant" /><%--其他品牌轉新概念店目標--%><ext:RecordField Name="TargetOM" /><%--家樂福店目標--%><ext:RecordField Name="TargetC4" /><%--總數目標--%><ext:RecordField Name="TargetTotal" /><%--新概念店開店數--%><ext:RecordField Name="NewStoreNewEntrant" /><%--其他品牌轉新概念店開店數--%><ext:RecordField Name="NewStoreOM" /><%--家樂福開店數--%><ext:RecordField Name="NewStoreC4" /><%--新概念店開店總數--%><ext:RecordField Name="NewStoreNCSTotal" /><%--美麗健康店開店數--%><ext:RecordField Name="NewStoreHB" /><%--開店總數--%><ext:RecordField Name="NewStoreTotal" /><%--新概念店簽約數--%><ext:RecordField Name="ContractSignedNCS" /><%--美麗健康店簽約數--%><ext:RecordField Name="ContractSignedHB" /><%--簽約總數--%><ext:RecordField Name="ContractSignedTotal" /><%--新概念店施工數--%><ext:RecordField Name="UnderDecoNCS" /><%--美麗康店施工數--%><ext:RecordField Name="UnderDecoHB" /><%--施工總數--%><ext:RecordField Name="UnderDecoTotal" /><%--改型店目標--%><ext:RecordField Name="UpgradingTarget" /><%--改型店數--%><ext:RecordField Name="UpgradingInOperation" /><%--改型店簽約數--%><ext:RecordField Name="UpgradingContractSigned" /><%--改型店施工數--%><ext:RecordField Name="UpgradingUnderDeco" /><%--自動解約數--%><ext:RecordField Name="ClosureNonPerform" /><%--公司解約數--%><ext:RecordField Name="ClosureForcedAttrition" /><%--解約總數--%><ext:RecordField Name="ClosureTotal" /><%--凈店數--%><ext:RecordField Name="StoreStatusNetStore" /><%--新概念店總數--%><ext:RecordField Name="StoreStatusStoreNoNCS" /><%--美麗健康店總數--%><ext:RecordField Name="StoreStatusStoreNoHB" /><%--老店總數--%><ext:RecordField Name="StoreStatusStoreNoOld" /><%--總店數--%><ext:RecordField Name="StoreStatusStoreNoTotal" /><%--報表創建日期--%><ext:RecordField Name="RptDate" Type="Date" /><ext:RecordField Name="DisplayMonth" /></Fields></ext:JsonReader></Reader><BaseParams><ext:Parameter Name="type" Value="ShopStatus" Mode="Value" /><ext:Parameter Name="Year" Value="getYear()" Mode="Raw" /><ext:Parameter Name="Month" Value="getMonth()" Mode="Raw" /></BaseParams></ext:Store></Store><ColumnModel ID="ColumnModel1" runat="server"><Columns><%--National:Start--%><ext:Column Header="Year" Hideable="true" DataIndex="DisplayMonth" Locked="true" /><ext:Column Header="ID" ColumnID="RptId" Hidden="true" DataIndex="RptId" /><%--National:End--%><%--<ext:Column Header="報表年份" Hidden="true" DataIndex="RptYear" />--%><%--NewStore:Start--%><%-----------Target:Start--%><ext:Column Header="NewEntrant" Hideable="true" DataIndex="TargetNewEntrant" /><ext:Column Header="OM" Hideable="true" DataIndex="TargetOM" /><ext:Column Header="C4" Hideable="true" DataIndex="TargetC4" /><ext:Column Header="Total" Hideable="true" DataIndex="TargetTotal" /><%-----------Target:End--%><%-----------Actual Store opened:Start--%><ext:Column Header="NewEntrant" Hideable="true" DataIndex="NewStoreNewEntrant" /><ext:Column Header="OM" Hideable="true" DataIndex="NewStoreOM" /><ext:Column Header="C4" Hideable="true" DataIndex="NewStoreC4" /><ext:Column Header="Total" Hideable="true" DataIndex="NewStoreNCSTotal" /><ext:Column Header="H&B" Hideable="true" DataIndex="NewStoreHB" /><ext:Column Header="Total" Hideable="true" DataIndex="NewStoreTotal" /><%-----------Actual Store opened:End--%><%----------- Contract Signed:Start--%><ext:Column Header="NCS" Hideable="true" DataIndex="ContractSignedNCS" /><ext:Column Header="H&B" Hideable="true" DataIndex="ContractSignedHB" /><ext:Column Header="Total" Hideable="true" DataIndex="ContractSignedTotal" /><%----------- Contract Signed:End--%><%----------- Under Deco.:Start--%><ext:Column Header="NCS" Hideable="true" DataIndex="UnderDecoNCS" /><ext:Column Header="H&B" Hideable="true" DataIndex="UnderDecoHB" /><ext:Column Header="Total" Hideable="true" DataIndex="UnderDecoTotal" /><%----------- Under Deco.:End--%><%--NewStore:End--%><%--Upgrading:Start--%><ext:Column Header="Target" Hideable="true" DataIndex="UpgradingTarget" /><ext:Column Header="InOperation" Hideable="true" DataIndex="UpgradingInOperation" /><ext:Column Header="ContractSigned" Hideable="true" DataIndex="UpgradingContractSigned" /><ext:Column Header="UnderDeco" Hideable="true" DataIndex="UpgradingUnderDeco" /><%--Upgrading:End--%><%--Closure:Start--%><%----------- Drop-Out:Start--%><ext:Column Header="NonPerform" Hideable="true" DataIndex="ClosureNonPerform" /><ext:Column Header="ForcedAttrition" Hideable="true" DataIndex="ClosureForcedAttrition" /><ext:Column Header="Total" Hideable="true" DataIndex="ClosureTotal" /><%----------- Drop-Out:End--%><%--Closure:End--%><%--Store Status:Start--%><ext:Column Header="NetStore" Hideable="true" DataIndex="StoreStatusNetStore" /><%----------- Store No.:Start--%><ext:Column Header="NCS" Hideable="true" DataIndex="StoreStatusStoreNoNCS" /><ext:Column Header="H&B" Hideable="true" DataIndex="StoreStatusStoreNoHB" /><ext:Column Header="Old" Hideable="true" DataIndex="StoreStatusStoreNoOld" /><ext:Column Header="Total" Hideable="true" DataIndex="StoreStatusStoreNoTotal" /><%----------- Store No.:End--%><%--Store Status:End--%><ext:DateColumn Header="報表創建日期" Hidden="true" DataIndex="RptDate" Format="yyyy-MM-dd" /></Columns></ColumnModel><LoadMask ShowMask="true" /><View><ext:GroupingView runat="server"><%--隱藏列在分組標頭中,仍占用列數--%><%--一個HeaderGroupRows表示一行--%><HeaderGroupRows><ext:HeaderGroupRow><Columns><ext:HeaderGroupColumn Header="<font class='headRows1'>National</font>" Align="Center" /><ext:HeaderGroupColumn Align="Center" Header="<font class='headRows1'>New Store</font>"ColSpan="17" /><ext:HeaderGroupColumn Align="Center" Header="<font class='headRows1'>Upgrading</font>"ColSpan="4" /><ext:HeaderGroupColumn Align="Center" Header="<font class='headRows1'>Closure</font>"ColSpan="3" /><ext:HeaderGroupColumn Align="Center" Header="<font class='headRows1'>Store Status</font>"ColSpan="5" /><ext:HeaderGroupColumn Align="Center" /></Columns></ext:HeaderGroupRow></HeaderGroupRows><HeaderGroupRows><ext:HeaderGroupRow><Columns><ext:HeaderGroupColumn Align="Center" Header="<font class='headRows2'>Year/Month</font>" /><ext:HeaderGroupColumn Align="Center" Header="<font class='headRows2'>Target</font>"ColSpan="5" /><ext:HeaderGroupColumn Align="Center" Header="<font class='headRows2'>Actual Store opened</font>"ColSpan="6" /><ext:HeaderGroupColumn Align="Center" Header="<font class='headRows2'>Contract Signed</font>"ColSpan="3" /><ext:HeaderGroupColumn Align="Center" Header="<font class='headRows2'>Under Deco</font>"ColSpan="3" /><ext:HeaderGroupColumn Align="Center" ColSpan="4" /><ext:HeaderGroupColumn Align="Center" Header="<font class='headRows2'>Drop-Out</font>"ColSpan="3" /><ext:HeaderGroupColumn Align="Center" /><ext:HeaderGroupColumn Align="Center" Header="<font class='headRows2'>Store No.</font>"ColSpan="4" /><ext:HeaderGroupColumn Align="Center" /></Columns></ext:HeaderGroupRow></HeaderGroupRows></ext:GroupingView></View><TopBar><ext:Toolbar ID="Toolbar1" runat="server"><Items><ext:ToolbarSpacer Width="10" runat="server" /><ext:NumberField runat="server" LabelWidth="74" ID="txtYear" Width="162" MinLength="4"MinLengthText="輸入的年份必須為四位數!" MaxLength="4" FieldLabel="請輸入年份" /><ext:ToolbarSpacer ID="ToolbarSpacer1" Width="10" runat="server" /><ext:ComboBox ID="cboMonth" LabelWidth="74" EmptyText="請選擇月份!" FieldLabel="請選擇月份"Editable="false" runat="server"><Items><ext:ListItem Text="01" Value="1" /><ext:ListItem Text="02" Value="2" /><ext:ListItem Text="03" Value="3" /><ext:ListItem Text="04" Value="4" /><ext:ListItem Text="05" Value="5" /><ext:ListItem Text="06" Value="6" /><ext:ListItem Text="07" Value="7" /><ext:ListItem Text="08" Value="8" /><ext:ListItem Text="09" Value="9" /><ext:ListItem Text="10" Value="10" /><ext:ListItem Text="11" Value="11" /><ext:ListItem Text="12" Value="12" /><ext:ListItem Text="ALL" Value=" " /></Items></ext:ComboBox><ext:ToolbarSpacer ID="ToolbarSpacer2" Width="10" runat="server" /><ext:Button ID="btnSearch" runat="server" Text="搜索" Icon="PageRefresh"><Listeners><Click Handler="if(#{txtYear}.getValue()==''){Ext.MessageBox.alert('溫馨提示', '請輸入年份!');}else{#{Store1}.reload();#{GridPanel1}.getColumnModel().setColumnHeader(0,#{txtYear}.getValue());}" /></Listeners></ext:Button><ext:ToolbarFill runat="server" /><ext:Button ID="btnExport" runat="server" Text="導出Excel" Icon="PageExcel"><Listeners><Click Handler="var downLoadUrl='/FormServerTemplates/DownLoad.aspx?year='+#{txtYear}.getValue()+'&month='+#{cboMonth}.getValue();try{window.open(downLoadUrl,'_newtab');}catch(e){window.lcation.href=downLoadUrl;}" /></Listeners></ext:Button></Items></ext:Toolbar></TopBar></ext:GridPanel></Items> </ext:Viewport>

然后只需要完善Httphandler類就好了。這個報表只是在列頭的組合上稍微有點難度,其實也沒難度,看我的代碼,應該是很清晰的。

2)現在開始說第二個報表了。再看看圖二:

這個報表難度其實也不大,主要有這么幾個地方值得注意:

  • 列頭合并。前面以后說過了。很簡單的配置。
  • 列合計。待會看源碼。
  • 過濾掉0。如果是0,則什么都不顯示,否則顯示藍色的數字。因為這個報表測試數據干了,我又懶,所以大家想象一下數據就好了。據說畫餅充饑是有效果的,當然不是我說的。信不信由你,反正我是相信了。
  • 注意列頭的HTML編碼。別把任意字符都往列頭加,列頭會表示有壓力的,并且會導致頁面空白而且無異常。所以注意把特殊字符進行編碼。

這個報表雖然復雜了一點點,但是也很簡單。現在一起來ViewCode:

<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %> <ext:ResourceManager ID="ResourceManager1" runat="server" /> <style type="text/css">.total-field{background-color: #fff;font-weight: bold !important;color: #000;padding: 2px;margin-right: 5px;}.headRows1{color: Green;font-weight: bolder;}.headRows2{color: Blue;font-weight: bolder;}.x-grid3-cell-inner{font-family: "segoe ui" ,tahoma, arial, sans-serif;}.x-grid-group-hd div{font-family: "segoe ui" ,tahoma, arial, sans-serif;}.x-grid3-hd-inner{font-family: "segoe ui" ,tahoma, arial, sans-serif;font-size: 12px;}.x-grid3-body .x-grid3-td-Cost{background-color: #f1f2f4;}.x-grid3-summary-row .x-grid3-td-Cost{background-color: #e1e2e4;} </style><script type="text/javascript">var template = '<b style="color:blue;">{0}</b>';var fifterZero = function (value, metadata, record, rowIndex, colIndex, store) {if (value > 0)return String.format(template, value);elsereturn '';};var updateTotal = function (grid) {var fbar = grid.getBottomToolbar(),column,field,width,data = {},c,cs = grid.view.getColumnData();for (var j = 0, jlen = grid.store.getCount(); j < jlen; j++) {var r = grid.store.getAt(j);for (var i = 0, len = cs.length; i < len; i++) {c = cs[i];if (j == 0)data[c.name] = 0;if (c.name == "Region")data[c.name] = "總計:";elsedata[c.name] += r.get(c.name);}}for (var i = 0; i < grid.getColumnModel().columns.length; i++) {column = grid.getColumnModel().columns[i];if (column.dataIndex != grid.store.groupField) {field = fbar.findBy(function (item) {return item.dataIndex === column.dataIndex;})[0];c = cs[i];fbar.remove(field, false);fbar.insert(i, field);width = grid.getColumnModel().getColumnWidth(i);field.setWidth(width - 5);field.setValue((column.summaryRenderer || c.renderer)(data[c.name], {}, {}, 0, i, grid.store));}}fbar.doLayout();} </script><ext:GridPanel ID="GridPanel1" AutoScroll="true" TrackMouseOver="true" runat="server"ColumnLines="true" StripeRows="true" AutoHeight="true" Title="Decoration Status"Icon="Bookmark"><Store><ext:Store ID="Store1" ShowWarningOnFailure="false" AutoLoad="true" runat="server"><Reader><ext:JsonReader><Fields><ext:RecordField Name="Region" /><ext:RecordField Name="ncsnew" Type="Int" /><ext:RecordField Name="h_bnew" Type="Int" /><ext:RecordField Name="updatencs" Type="Int" /><ext:RecordField Name="updateh_b" Type="Int" /><ext:RecordField Name="ncsnewnext1" Type="Int" /><ext:RecordField Name="h_bnewnext1" Type="Int" /><ext:RecordField Name="updatencsnext1" Type="Int" /><ext:RecordField Name="updateh_bnext1" Type="Int" /><ext:RecordField Name="ncsnewnext2" Type="Int" /><ext:RecordField Name="h_bnewnext2" Type="Int" /><ext:RecordField Name="updatencsnext2" Type="Int" /><ext:RecordField Name="updateh_bnext2" Type="Int" /><ext:RecordField Name="ncsnewnext3" Type="Int" /><ext:RecordField Name="h_bnewnext3" Type="Int" /><ext:RecordField Name="updatencsnext3" Type="Int" /><ext:RecordField Name="updateh_bnext3" Type="Int" /><ext:RecordField Name="ncsnewCertificated" Type="Int" /><ext:RecordField Name="h_bnewCertificated" Type="Int" /><ext:RecordField Name="updatencsCertificated" Type="Int" /><ext:RecordField Name="updateh_bCertificated" Type="Int" /></Fields></ext:JsonReader></Reader></ext:Store></Store><LoadMask ShowMask="true" /><ColumnModel ID="ctl120"><Columns><ext:Column DataIndex="Region" Header="Region" /><ext:Column DataIndex="ncsnew" Header="New NCS"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="h_bnew" Header="New H&amp;B"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="updatencs" Header="Upgrading NCS"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="updateh_b" Header="Upgrading H&amp;B"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="ncsnewnext1" Header="New NCS"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="h_bnewnext1" Header="New H&amp;B"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="updatencsnext1" Header="Upgrading NCS"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="updateh_bnext1" Header="Upgrading H&amp;B"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="ncsnewnext2" Header="New NCS"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="h_bnewnext2" Header="New H&amp;B"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="updatencsnext2" Header="Upgrading NCS"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="updateh_bnext2" Header="Upgrading H&amp;B"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="ncsnewnext3" Header="New NCS"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="h_bnewnext3" Header="New H&amp;B"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="updatencsnext3" Header="Upgrading NCS"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="updateh_bnext3" Header="Upgrading H&amp;B"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="ncsnewCertificated" Header="New NCS"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="h_bnewCertificated" Header="New H&amp;B"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="updatencsCertificated" Header="Upgrading NCS"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column><ext:Column DataIndex="updateh_bCertificated" Header="Upgrading H&amp;B"><Renderer Fn="fifterZero" Args="value, metadata, record, rowIndex, colIndex, store" /></ext:Column></Columns></ColumnModel><Listeners><ColumnResize Handler="updateTotal(this);" /><AfterRender Handler="updateTotal(this);" Delay="100" /></Listeners><View><ext:GroupingView ID="gvColumns" runat="server" /></View><BottomBar><ext:Toolbar ID="Toolbar1" runat="server"><Items><ext:DisplayField ID="DisplayField1" runat="server" Cls="total-field" Text="-" DataIndex="Region" /><ext:DisplayField ID="DisplayField2" runat="server" Cls="total-field" Text="-" DataIndex="ncsnew" /><ext:DisplayField ID="DisplayField3" runat="server" Cls="total-field" Text="-" DataIndex="h_bnew" /><ext:DisplayField ID="DisplayField4" runat="server" Cls="total-field" Text="-" DataIndex="updatencs" /><ext:DisplayField ID="DisplayField5" runat="server" Cls="total-field" Text="-" DataIndex="updateh_b" /><ext:DisplayField ID="DisplayField6" runat="server" Cls="total-field" Text="-" DataIndex="ncsnewnext1" /><ext:DisplayField ID="DisplayField7" runat="server" Cls="total-field" Text="-" DataIndex="h_bnewnext1" /><ext:DisplayField ID="DisplayField8" runat="server" Cls="total-field" Text="-" DataIndex="updatencsnext1" /><ext:DisplayField ID="DisplayField9" runat="server" Cls="total-field" Text="-" DataIndex="updateh_bnext1" /><ext:DisplayField ID="DisplayField10" runat="server" Cls="total-field" Text="-" DataIndex="ncsnewnext2" /><ext:DisplayField ID="DisplayField11" runat="server" Cls="total-field" Text="-" DataIndex="h_bnewnext2" /><ext:DisplayField ID="DisplayField12" runat="server" Cls="total-field" Text="-" DataIndex="updatencsnext2" /><ext:DisplayField ID="DisplayField13" runat="server" Cls="total-field" Text="-" DataIndex="updateh_bnext2" /><ext:DisplayField ID="DisplayField14" runat="server" Cls="total-field" Text="-" DataIndex="ncsnewnext3" /><ext:DisplayField ID="DisplayField15" runat="server" Cls="total-field" Text="-" DataIndex="h_bnewnext3" /><ext:DisplayField ID="DisplayField16" runat="server" Cls="total-field" Text="-" DataIndex="updatencsnext3" /><ext:DisplayField ID="DisplayField17" runat="server" Cls="total-field" Text="-" DataIndex="updateh_bnext3" /><ext:DisplayField ID="DisplayField18" runat="server" Cls="total-field" Text="-" DataIndex="ncsnewCertificated" /><ext:DisplayField ID="DisplayField19" runat="server" Cls="total-field" Text="-" DataIndex="h_bnewCertificated" /><ext:DisplayField ID="DisplayField20" runat="server" Cls="total-field" Text="-" DataIndex="updatencsCertificated" /><ext:DisplayField ID="DisplayField21" runat="server" Cls="total-field" Text="-" DataIndex="updateh_bCertificated" /></Items></ext:Toolbar></BottomBar> </ext:GridPanel>

該說的都說了,注釋也懶得寫了。現在想說的是下面幾點:

  • 首先來看記錄集(RecordField)。注意字段的類型(Type="Int")。比如你的數據中有DateTime類型、Int類型的數據,最好設置下類型,這樣的話,就可以避免出現undefined。而且也方便格式轉換。
  • Store。這個Store為什么沒有設置URL呢?在《EXT.NET高效開發(一)——概述》我說過,“7)數據交換更簡單”。應該是“數據交互”,本人比較懶,只在這里更正申明下好了,我也是剛看到。這里的Store,是在后臺賦值的。如下面代碼:
  • var qList = _db.SelectReportMonthDataForUnderDeco().ToList();Store1.DataSource = qList;Store1.DataBind();
  • 統計怎么算的?注意updateTotal函數。“總計”兩個字是怎么加上去的,答曰:“敲上去的”。再注意BottomBar(想當然的,這就是底部工具條),這里就是顯示統計的數據的。
  • 估計看官會有這么一個疑問,列頭分組怎么分的,木有見代碼。代碼是有的,只是還木有貼出來,因為我寫在后臺,這種方式也挺直觀方便的。當然蘿卜白菜各有所愛了:
  • var _headGroupRow = new HeaderGroupRow(){Columns ={new HeaderGroupColumn(){Header = "<font class='headRows1'></font>",Align = Alignment.Center,ColSpan = 1}}};_headGroupRow.Columns.Add(new HeaderGroupColumn(){Header =string.Format("<font class='headRows1'>{0}</font>","Under Deco."),Align = Alignment.Center,ColSpan = 4,});var _currentMonth = Convert.ToInt32(qList.First().monthnum.Trim());for (int i = 0; i < 3; i++){_headGroupRow.Columns.Add(new HeaderGroupColumn(){Header =string.Format("<font class='headRows1'>{0}</font>",GetEnglishMonth((_currentMonth + i).ToString())),Align = Alignment.Center,ColSpan = 4,});}_headGroupRow.Columns.Add(new HeaderGroupColumn(){Header =string.Format("<font class='headRows1'>{0}</font>","Certificated"),Align = Alignment.Center,ColSpan = 4,});gvColumns.HeaderGroupRows.Add(_headGroupRow);

    這個就說到這里了。

    3)這個相對來說,比上兩個都復雜。但是我畫起來,比上兩個都快。一個是更熟練了,第二個是生成了很多東西。

    先看頁面代碼(頁面代碼很簡潔):

    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %> <style type="text/css">.headRows1{color: Green;font-weight: bolder;}.headRows2{color: Purple;font-weight: bolder;} </style><script type="text/javascript">var template = '<b style="color:blue;">{0}</b>';var fifterZero = function(value) {if (value > 0)return String.format(template, value);elsereturn '';};function search() {if (ddlArea.getValue() != '' && ddlYear.getValue() != '' && ddlMonth.getValue() != '') {window.location.href = '<%=CurrentUrl %>' + "?newarea=" + escape(ddlArea.getValue()) + "&newyear=" + ddlYear.getValue() + "&newmonth=" + ddlMonth.getValue();} else {alert("請選擇區域-年份-月份!");}} </script><div style="margin-left:10px;"><ext:ResourceManager ID="ResourceManager1" runat="server" /><ext:FieldSet Collapsible="true" ID="Panel1" Border="true" Width="800" runat="server"Title="搜索條件" AutoHeight="true"><Items><ext:TableLayout ID="TableLayout1" runat="server" Columns="3"><Cells><ext:Cell><ext:ComboBox ID="ddlArea" Width="235" IDMode="Static" FieldLabel="區域" Editable="false"runat="server" /></ext:Cell><ext:Cell><ext:ComboBox ID="ddlYear" Width="235" IDMode="Static" FieldLabel="年份" Editable="false"runat="server" /></ext:Cell><ext:Cell><ext:ComboBox ID="ddlMonth" Width="235" IDMode="Static" FieldLabel="月份" Editable="false"runat="server" /></ext:Cell></Cells></ext:TableLayout></Items><BottomBar><ext:Toolbar ID="tbSearch" runat="server"><Items><ext:Button ID="btnSearch" runat="server" Text="查詢" Icon="ArrowRefresh" LabelAlign="Left"Type="Button" AutoPostBack="false"><Listeners><Click Handler="search();" /></Listeners></ext:Button></Items></ext:Toolbar></BottomBar></ext:FieldSet><ext:GridPanel ID="GridPanel1" AutoScroll="true" TrackMouseOver="true" runat="server"ColumnLines="true" StripeRows="true" AutoHeight="true" Title="ShopStatus" Icon="Date"><Store><ext:Store ID="Store1" ShowWarningOnFailure="false" AutoLoad="true" runat="server" /></Store><LoadMask ShowMask="true" /><ColumnModel ID="ctl120" /><View><ext:GroupingView ID="gvColumns" runat="server" /></View><BottomBar><ext:Toolbar ID="Toolbar1" runat="server" Margins="0,0,0,0"><Items><ext:GridPanel ID="gpItems" AutoScroll="true" TrackMouseOver="true" runat="server" Margins="0,0,0,0"HideHeaders="true" ColumnLines="true" StripeRows="true" AutoHeight="true" Title="Jun"Icon="DateGo"><Store><ext:Store ID="storeItems" ShowWarningOnFailure="false" AutoLoad="true" runat="server" /></Store><LoadMask ShowMask="true" /><ColumnModel /></ext:GridPanel></Items></ext:Toolbar></BottomBar></ext:GridPanel> </div><script type="text/javascript">Ext.onReady(function() {$(function() {setTimeout("setLabelClass()", 300);});});function setLabelClass() {$("table.x-table-layout").attr("width", "100%");} </script> 仔細看起來,發現這個頁面代碼并沒啥東西。只能隱約的看到,一個GridPanel底部放了一個GridPanel。看來真不是個東西。這里暫不作解釋,繼續貼碼: /// <summary>/// 獲取當前URL/// </summary>public string CurrentUrl{get { return Request.Path; }}protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){ResourceManager1.BuildAllPrivilegesForExtNET();//注冊JQuery腳本this.Page.ClientScript.RegisterClientScriptInclude("JQuery4.4", "/js/jquery-1.4.4.min.js");#region 綁定年月for (int i = 0; i < 20; i++){ddlYear.Items.Add(new ListItem(DateTime.Now.AddYears(-i).Year.ToString()));}for (int i = 1; i <= 12; i++){ddlMonth.Items.Add(new ListItem(i.ToString()));} #endregion#region 綁定區域using (var _db = new NBShopDataContext()){var _lstArea = _db.SelectArea().ToList();foreach (var areaResult in _lstArea){ddlArea.Items.Add(new ListItem(areaResult.AreaName));}ddlArea.Items.Add(new ListItem("全國"));} #endregionvar _cm = new CommonService();#region 獲取搜索條件var _month = string.IsNullOrEmpty(Request.QueryString["newmonth"])? (Request.QueryString["month"] ?? DateTime.Now.Month.ToString()): Request.QueryString["newmonth"];var _areaName = string.IsNullOrEmpty(Request.QueryString["newarea"])? (Request.QueryString["area"] ?? "全國"): Request.QueryString["newarea"];var _year = string.IsNullOrEmpty(Request.QueryString["newyear"])? (Request.QueryString["year"] ?? DateTime.Now.Year.ToString()): Request.QueryString["newyear"];var _dic = new Dictionary<string, string>(){{"@areaname", _areaName},{"@monthnum", _month},{"@yearnum", _year}}; #endregion#region 選擇相應的值ddlArea.SelectedItem.Value = _areaName;ddlMonth.SelectedItem.Value = _month;ddlYear.SelectedItem.Value = _year; #endregion#region 如果不是全國,區域就無法選擇if (Request.QueryString["area"] != "全國"){ddlArea.Disabled = true;} #endregion#region 獲取數據DataTable _dt = _cm.SelectReportByStoredName("SelectMonthDataAndWeekData", _dic);if (_dt == null || _dt.Rows.Count == 0){X.Msg.Alert("溫馨提示", "沒有數據可供顯示!").Show();GridPanel1.RemoveAll();return;} #endregion#region 綁定數據BingData(_dt.AsEnumerable().Where(p => p[0].ToString().IndexOf("-") == -1 && p[0].ToString() != "MTD" && p[0].ToString() != "Drop Out" && p[0].ToString() != "Net").AsDataView(), GridPanel1, Store1);BingData(_dt.AsEnumerable().Where(p => p[0].ToString().Contains("-") || p[0].ToString() == "MTD" || p[0].ToString() == "Drop Out" || p[0].ToString() == "Net").AsDataView(), gpItems, storeItems); #endregionGridPanel1.Header = false;//綁定子版塊標題(當前月)gpItems.Title = GetEnglishMonth(_month);#region 設置列頭if (GridPanel1.ColumnModel.Columns.Count >= 17){GridPanel1.ColumnModel.Columns[0].Header = _areaName;GridPanel1.ColumnModel.Columns[1].Header = "NCS";GridPanel1.ColumnModel.Columns[2].Header = Server.HtmlEncode("H&B");GridPanel1.ColumnModel.Columns[3].Header = Server.HtmlEncode("Others");GridPanel1.ColumnModel.Columns[4].Header = Server.HtmlEncode("Total Franchise");GridPanel1.ColumnModel.Columns[5].Header = Server.HtmlEncode("New Prospects / Application Completed");GridPanel1.ColumnModel.Columns[6].Header = Server.HtmlEncode("Contract Approved/ No Deco.");GridPanel1.ColumnModel.Columns[7].Header = Server.HtmlEncode("Under Deco");GridPanel1.ColumnModel.Columns[8].Header = Server.HtmlEncode("New Prospects / Application Completed");GridPanel1.ColumnModel.Columns[9].Header = Server.HtmlEncode("Contract Approved/ No Deco.");GridPanel1.ColumnModel.Columns[10].Header = Server.HtmlEncode("Under Deco");GridPanel1.ColumnModel.Columns[11].Header = Server.HtmlEncode("New Prospects / Application Completed");GridPanel1.ColumnModel.Columns[12].Header = Server.HtmlEncode("Contract Approved/ No Deco.");GridPanel1.ColumnModel.Columns[13].Header = Server.HtmlEncode("Under Deco");GridPanel1.ColumnModel.Columns[14].Header = Server.HtmlEncode("New Prospects / Application Completed");GridPanel1.ColumnModel.Columns[15].Header = Server.HtmlEncode("Contract Approved/ No Deco.");GridPanel1.ColumnModel.Columns[16].Header = Server.HtmlEncode("Under Deco");GridPanel1.ColumnModel.Columns[17].Header = Server.HtmlEncode("New NCS");GridPanel1.ColumnModel.Columns[18].Header = Server.HtmlEncode("New H&B");GridPanel1.ColumnModel.Columns[19].Header = Server.HtmlEncode("Upgrading");GridPanel1.ColumnModel.Columns[20].Header = Server.HtmlEncode("Upgrading H&B");}#endregion#region 設置合并的列頭var _headGroupRow = new HeaderGroupRow(){Columns ={new HeaderGroupColumn(){Header = "<font class='headRows1'></font>",Align = Alignment.Center,ColSpan = 1}}};_headGroupRow.Columns.Add(new HeaderGroupColumn(){Header =string.Format("<font class='headRows1'>{0}</font>","In operation"),Align = Alignment.Center,ColSpan = 4,});_headGroupRow.Columns.Add(new HeaderGroupColumn(){Header =string.Format("<font class='headRows2'>{0}</font>","New NCS"),Align = Alignment.Center,ColSpan = 3,});_headGroupRow.Columns.Add(new HeaderGroupColumn(){Header =string.Format("<font class='headRows2'>{0}</font>",Server.HtmlEncode("New H&B")),Align = Alignment.Center,ColSpan = 3,});_headGroupRow.Columns.Add(new HeaderGroupColumn(){Header =string.Format("<font class='headRows2'>{0}</font>","Upgrades--NCS"),Align = Alignment.Center,ColSpan = 3,});_headGroupRow.Columns.Add(new HeaderGroupColumn(){Header =string.Format("<font class='headRows2'>{0}</font>",Server.HtmlEncode("Upgrades--H&B")),Align = Alignment.Center,ColSpan = 3,});_headGroupRow.Columns.Add(new HeaderGroupColumn(){Header =string.Format("<font class='headRows1'>{0}</font>","Certificated"),Align = Alignment.Center,ColSpan = 4,});gvColumns.HeaderGroupRows.Add(_headGroupRow);#endregion_dt.Dispose();}}/// <summary>/// 生成字段和列,并綁定數據源/// </summary>/// <param name="_rptData"></param>/// <param name="_gp"></param>/// <param name="_store"></param>private void BingData(System.Data.DataView _rptData, GridPanel _gp, Store _store){var _jsonReader = new JsonReader();foreach (DataColumn _dataColumn in _rptData.Table.Columns){//創建字段if (_dataColumn.ColumnName == "timecol"){_jsonReader.Fields.Add(new RecordField(_dataColumn.ColumnName));}else{_jsonReader.Fields.Add(new RecordField(_dataColumn.ColumnName));}//創建列var _column = new Column{Header = _dataColumn.ColumnName,DataIndex = _dataColumn.ColumnName,};//過濾0,調用fifterZero函數if (_column.Header != "timecol"){_column.Renderer.Fn = "fifterZero";_column.Renderer.Args = new string[] { "value" };}_gp.ColumnModel.Columns.Add(_column);}_store.Reader.Add(_jsonReader);_store.DataSource = _rptData;_store.DataBind();} 代碼貼上去了,發現木有,也不是很多,這里我順便解釋解釋:
  • 點擊【查詢】按鈕后,刷新頁面獲取數據。當然您也可以改成不刷新的,也很簡單的,這里我是為了更簡單。 不過在這方面,我要說一下:你可以使用X.IsAjaxRequest來判斷是否是EXT的Ajax請求,別重復執行了Page_load事件里面的代碼。
  • 數據源是直接綁的,使用的是DataTable。然后在綁定的時候,使用LINQ to DataTable進行了過濾。這個報表不會有多少數據。 當然如果你喜歡2.0的話,也可以用那個Select啊,DataView的RowFilter等來過濾。
  • 數據集、字段、列是動態加的,列頭是手動寫的。因為列頭不一樣,而且有特殊字符。也就是說,如果可以,你完全可以動態生成整個GridPanel。
  • 最后說點。Extjs與JQuery框架是不沖突的,井水不犯河水。
  • 封裝點函數,整個動態生成,也是一種高效的開發,這也是我EXT.NET高效開發系列所推崇的(EXT.NET高效開發(二)——封裝函數)。 也許有人會說點性能問題什么的,我個人認為,生活總是有所取舍的,至于如何取舍,就需要根據個人的環境來判斷了,不要撿了芝麻丟了西瓜就行了。 再套用一句,勿以BUG小而為之,勿以Code小而不為。 總算寫完了。有時間的話,我會繼續…

    轉載于:https://www.cnblogs.com/codelove/archive/2011/07/27/2118492.html

    總結

    以上是生活随笔為你收集整理的EXT.NET复杂布局(二)——报表的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    91av原创| 九色porny真实丨国产18 | 欧美日本一区 | 亚洲免费高清视频 | 亚洲成人av在线 | 国产精品久久中文字幕 | 日日干天夜夜 | 免费在线一区二区 | 中文字幕在线免费播放 | 久久亚洲二区 | www一起操 | 久久久久99精品成人片三人毛片 | 国产亚洲视频中文字幕视频 | 国产成人资源 | 精品国产一二区 | 在线观看一级 | 成人黄色电影在线播放 | av线上看 | 2019中文最近的2019中文在线 | 九九在线高清精品视频 | 久久免费精品国产 | 色婷婷六月天 | 中文超碰字幕 | 久久久久女人精品毛片九一 | 久久视频中文字幕 | 蜜臀91丨九色丨蝌蚪老版 | 97视频人人澡人人爽 | 麻豆国产精品va在线观看不卡 | 亚洲国产精品久久久 | 最近中文国产在线视频 | 激情丁香5月| 久久久国产毛片 | 国产成人一区二区三区 | 日本久久久亚洲精品 | 在线综合 亚洲 欧美在线视频 | 欧美粗又大 | 免费在线黄 | av黄免费看 | 久久午夜国产 | 成年一级片 | 色婷五月天| 国产黄色精品网站 | 国产日韩精品一区二区在线观看播放 | 四虎影视成人永久免费观看亚洲欧美 | 香蕉视频在线免费看 | 午夜精品中文字幕 | 国语对白少妇爽91 | 色视频成人在线观看免 | 久久草在线免费 | 蜜桃视频成人在线观看 | www.91成人 | 97成人在线 | 国产 日韩 中文字幕 | 丁香九月激情综合 | 97免费在线观看视频 | 美女一区网站 | 一级片视频在线 | 国产精品短视频 | 亚洲不卡av一区二区三区 | 手机看片国产日韩 | 亚洲国产中文在线观看 | 9999精品免费视频 | av免费在线播放 | 中文字幕资源网 国产 | 91日韩在线播放 | 最近中文字幕国语免费高清6 | 国产精品自产拍在线观看蜜 | 国产综合在线观看视频 | 国产探花视频在线播放 | 国产一区成人在线 | 久久免费视频观看 | 日韩欧美在线一区 | 99日韩精品| 黄色av网站在线免费观看 | 欧美一二三区在线观看 | 亚洲 成人 一区 | 国产精品午夜在线 | 日韩在线播放视频 | 成人在线视频免费看 | 97人人模人人爽人人喊网 | 久久久久久网站 | 91理论片午午伦夜理片久久 | 欧美精品v国产精品v日韩精品 | 欧美日韩免费看 | 国产精品一区二区三区免费看 | 五月婷婷操 | 91久久精品日日躁夜夜躁国产 | 久久国产露脸精品国产 | 玖玖视频 | 国产xxxx| 日本午夜免费福利视频 | 久久一区二区三区四区 | 日日干视频 | 丁香六月天婷婷 | 免费观看日韩 | av丁香花| 国产精品国内免费一区二区三区 | 97色国产 | 91成熟丰满女人少妇 | 国产精品免费观看国产网曝瓜 | 网站在线观看你们懂的 | 视频一区二区免费 | 五月天色婷婷丁香 | 色综合久久中文综合久久牛 | 久久99精品国产99久久 | 亚洲国产美女精品久久久久∴ | 国产精品久久一 | 久在线观看视频 | 黄色影院在线免费观看 | 亚洲国产精品久久久久 | 免费久久99精品国产 | 免费在线观看视频一区 | 午夜视频在线观看一区二区三区 | 黄色高清视频在线观看 | 免费在线激情电影 | 色天天天 | 日韩高清av在线 | 亚洲h色精品 | 正在播放国产一区 | 中文字幕中文 | 超碰在线观看av | www.久久色 | 欧美日韩免费在线观看视频 | 96超碰在线| 毛片无卡免费无播放器 | 丁香5月婷婷久久 | 天天干.com | 欧美亚洲成人免费 | 97成人免费 | 日韩精品中文字幕在线不卡尤物 | 国产九九九精品视频 | 国产成人精品在线观看 | 视频国产一区二区三区 | 国产在线2020 | 国产精品一区二区在线免费观看 | 97视频在线播放 | 国产精品一区免费在线观看 | 中文字幕日本特黄aa毛片 | 久久久综合 | 国产精品免费视频观看 | 狠狠狠干狠狠 | 人人插人人干 | 久久久久久久久影视 | 97电影在线看视频 | 亚洲午夜在线视频 | 99这里只有久久精品视频 | 国产激情小视频在线观看 | 欧美激情精品一区 | 黄色日本免费 | 久久精品欧美日韩精品 | av官网在线 | 又黄又爽又湿又无遮挡的在线视频 | 99久久久国产免费 | 国产一区二区手机在线观看 | 岛国片在线| 免费精品在线观看 | 美女视频黄是免费的 | 欧美综合干 | 国产精品成人一区 | 中文在线a√在线 | 婷婷在线免费 | 在线观看黄污 | 美女网站一区 | 69视频网站| 亚洲最新精品 | 999久久| 久久精品亚洲精品国产欧美 | 97视频久久久| 日韩高清在线观看 | 99久久久国产精品免费99 | 欧美整片sss| 久久久久久久久久久久亚洲 | 亚洲激情网站免费观看 | 国产二区视频在线观看 | 国产国产人免费人成免费视频 | 日韩欧美在线不卡 | av黄在线播放| 久久久久久久久久久久久影院 | 日韩视频二区 | 97国产在线视频 | 天天操导航 | 国产一级二级三级视频 | 色无五月 | 国产成人精品av在线 | 992tv人人草 黄色国产区 | 成年人免费av| 久久久久久久久久久久影院 | 国产美腿白丝袜足在线av | 国产精品对白一区二区三区 | 日日天天狠狠 | 91九色蝌蚪国产 | 欧美日韩中文国产 | 日韩区视频| 日韩精品视频一二三 | 天天爽夜夜爽精品视频婷婷 | www久久久| 中文字幕观看在线 | 奇米网8888 | 亚洲在线免费视频 | 又色又爽又激情的59视频 | 国产福利精品一区二区 | 亚洲欧美视频一区二区三区 | 国产91在线 | 美洲 | 精品综合久久 | 久久人人看 | 人人澡人人干 | av一级网站 | 天天综合狠狠精品 | 啪啪免费观看网站 | 免费av在| 999免费视频 | 久久天天躁夜夜躁狠狠85麻豆 | 色99网 | 国产美女精品人人做人人爽 | 亚洲精品视频在线免费 | 一级片黄色片网站 | 91传媒视频在线观看 | 亚洲成人频道 | 久久综合丁香 | 日韩精品久久久免费观看夜色 | 亚洲成人黄色av | 特级毛片在线免费观看 | 久久人人爽人人人人片 | 日日夜夜狠狠 | 久久久香蕉视频 | 在线91视频 | 国产精品视频大全 | 丁香婷婷综合五月 | 91chinesexxx| 欧美一区二区三区免费看 | 天天躁日日躁狠狠躁av麻豆 | 中文字幕日本电影 | 欧美一区二区视频97 | 四虎永久免费在线观看 | 波多野结衣在线观看视频 | 欧美五月婷婷 | 日日碰狠狠添天天爽超碰97久久 | 免费在线观看国产精品 | 日韩成人不卡 | 亚洲成a人片在线www | 国产在线观看91 | 国产一区国产精品 | 日日干 天天干 | 亚洲日本韩国一区二区 | 国产精品国内免费一区二区三区 | 中文字幕免费高 | 国产精品一区二区久久精品 | 欧美精品中文字幕亚洲专区 | 日韩免费福利 | 欧美日韩国产免费视频 | 亚洲日b视频| 99久久精品免费看国产四区 | 99精品国产免费久久 | 亚洲欧洲国产视频 | 特级西西444www高清大视频 | 黄色av电影| 国产一区欧美一区 | 日韩在线欧美在线 | 国产精品男女啪啪 | 日韩国产欧美在线播放 | 久久久精品国产一区二区三区 | 久久免费视频在线观看 | 一区二区三区日韩视频在线观看 | 婷婷av在线| 国产精品大尺度 | 91九色在线| 欧美另类成人 | 91cn国产在线 | 成人黄色在线观看视频 | 日韩视频在线观看视频 | 激情婷婷欧美 | x99av成人免费 | 色欧美88888久久久久久影院 | 在线免费观看亚洲视频 | 国产成免费视频 | 日韩av片无码一区二区不卡电影 | 久久爱资源网 | 在线欧美最极品的av | 亚洲精品久 | 日韩h在线观看 | 国产精品96久久久久久吹潮 | 麻豆成人网| 天天摸夜夜添 | 日本久久久精品视频 | 国产精品久久99综合免费观看尤物 | 在线免费av网 | 欧美人体xx | 91亚洲狠狠婷婷综合久久久 | 亚洲日本va在线观看 | 天天操天天添 | 成人9ⅰ免费影视网站 | 午夜精品一区二区三区可下载 | 四虎影视精品 | 国产高清黄色 | 日日夜夜天天射 | 在线 你懂| 丁香花在线观看免费完整版视频 | 麻豆免费在线播放 | 91成人免费 | 五月婷婷,六月丁香 | 日韩中字在线观看 | 国产亚洲aⅴaaaaaa毛片 | 日韩高清一区 | 久久免费观看少妇a级毛片 久久久久成人免费 | 成人a视频 | 欧美一级乱黄 | 91精品一区二区三区蜜臀 | 丰满少妇在线观看资源站 | 久久综合九色综合97_ 久久久 | 精品久久久久国产免费第一页 | 偷拍区另类综合在线 | 不卡的av电影在线观看 | 国产91国语对白在线 | 欧美精品乱码久久久久久 | 国产精品日韩欧美 | 亚洲精品一区二区三区新线路 | 天天爽天天搞 | 在线天堂亚洲 | 国产91九色视频 | 久久久香蕉视频 | 久草网视频 | 日韩黄色一级电影 | 日韩小视频 | 欧美另类tv| 亚洲综合日韩在线 | 伊人中文字幕在线 | 久草在线视频首页 | 久久99亚洲网美利坚合众国 | 欧美成人精品欧美一级乱 | 日本在线观看中文字幕无线观看 | 色婷婷av一区 | 美女免费视频观看网站 | 久久精品国产一区二区三 | 天天干,天天射,天天操,天天摸 | 久久免费毛片视频 | 国产在线播放一区二区 | 久久久精品一区二区三区 | 久久9999久久| 欧美精品做受xxx性少妇 | 亚洲在线看 | 日韩理论电影在线观看 | 天天干天天操av | 国产三级视频 | 精品福利av | 亚洲v欧美v国产v在线观看 | 成人午夜在线电影 | 成年人网站免费在线观看 | 成年人在线免费看视频 | 色先锋av资源中文字幕 | 奇米网777| 日韩视频精品在线 | 国产手机视频 | 中文av字幕在线观看 | 97综合在线| 欧美精品网站 | 最新av在线播放 | 三三级黄色片之日韩 | 成人h在线观看 | 亚洲人成人天堂h久久 | 国产免费亚洲 | 久久久久久亚洲精品 | 久久精品日韩 | 免费久久99精品国产 | 久久在草| 久久伦理电影网 | 亚洲精品美女久久久久 | 九九久久久 | 欧美精品在线观看免费 | 在线99视频 | 久草久视频 | 国产第一二区 | 成人一级在线 | 国产午夜麻豆影院在线观看 | 黄色成年片 | 国产中文字幕在线看 | 久久久久成人精品亚洲国产 | 韩国一区在线 | 久久tv| 久久av免费电影 | 欧美一区三区四区 | 国产小视频国产精品 | 91在线观看高清 | 中文字幕丝袜一区二区 | 亚洲激情在线观看 | 国产九九在线 | av免费在线观 | 综合激情av | 久久婷婷国产色一区二区三区 | 香蕉免费| 91高清在线 | 国产精品久久久久久妇 | 一本一本久久a久久 | 国产手机在线观看 | 国产午夜在线 | 欧美日韩调教 | 欧美美女视频在线观看 | 久久视频免费在线 | 国产精品久久久久久久久久久久 | 久久国产精品99久久久久久丝袜 | 视频在线在亚洲 | 欧美a性| 成人午夜影院在线观看 | 黄色免费av | 国产成人精品不卡 | 日韩av在线免费看 | 久久99久久99精品免视看婷婷 | 高清一区二区三区av | 在线观看中文字幕一区二区 | 久草在线免费看视频 | av在线激情 | 亚洲激情p | 国产99久久久国产精品免费看 | 九九精品无码 | 亚洲第一av在线播放 | 五月开心色 | a级国产乱理伦片在线观看 亚洲3级 | 成人黄色毛片 | 国产精品videossex国产高清 | 成人免费观看视频大全 | 国产精品9999久久久久仙踪林 | 欧美小视频在线观看 | 精品国产伦一区二区三区观看方式 | 久久在线电影 | av综合站| 美女黄色网在线播放 | 国产精品18久久久久vr手机版特色 | 久久视频这里有久久精品视频11 | 久久伊人八月婷婷综合激情 | av成人在线播放 | 91网在线看 | www.夜色.com | 高清久久久 | 福利区在线观看 | 国产精品久久久久av免费 | 国产视频精品免费播放 | 国产aaa大片| 久久午夜视频 | 亚洲精品视频在线观看免费 | 青青河边草免费观看完整版高清 | 久久er99热精品一区二区三区 | 91av观看| 成人午夜黄色影院 | 免费下载高清毛片 | 2022久久国产露脸精品国产 | 99热.com| 亚洲在线视频观看 | 热精品 | 日韩成人黄色 | 天天天天射 | 欧美午夜精品久久久久久浪潮 | 欧美精品在线观看一区 | 国产成人一区二区三区久久精品 | 天天操天天操天天操天天 | 99精品欧美一区二区 | 18国产精品福利片久久婷 | 久久视频这里有精品 | 亚洲精选视频在线 | 日韩欧美精选 | 精品久久久久_ | 在线观看视频日韩 | 激情视频二区 | 久久综合精品一区 | 日韩在线三级 | 欧美日韩中文在线 | 国产老熟| 中文字幕之中文字幕 | av免费看av| 成人黄色片免费 | 久草在线91 | 蜜臀av性久久久久av蜜臀妖精 | 国产精品久久久久久久毛片 | 一区二区电影在线观看 | 成人一区二区在线 | 在线播放视频一区 | 国产精品久久久999 国产91九色视频 | 欧美电影在线观看 | av解说在线观看 | 欧美成年网站 | 久久精品久久99精品久久 | 亚欧日韩av| 亚洲人久久久 | 人人澡超碰碰 | 黄污网站在线观看 | 久一久久| 香蕉视频国产在线观看 | 久热这里有精品 | 人人爽人人爽人人片 | 在线视频日韩欧美 | 波多野结衣亚洲一区二区 | 人人爽人人爽av | 成人一级黄色片 | 高清久久久 | 99理论片| 久草在线观看 | 伊人五月天| 国产亚洲字幕 | av资源在线观看 | 国产一区二区久久精品 | 一区二区视频网站 | 久久亚洲福利 | 色婷婷导航| 狠狠狠干狠狠 | 久久精品视频在线看 | 国产精品日韩久久久久 | 国产日韩精品一区二区 | 在线观看中文字幕一区 | 在线观看精品视频 | 激情六月婷婷久久 | 久久理论片 | 久久福利在线 | 国产精品女同一区二区三区久久夜 | 欧美a级片免费看 | 性色av香蕉一区二区 | 久久黄网站 | 九色视频网站 | 亚洲成人av一区二区 | 91精品国产99久久久久久红楼 | 久久久免费av| 日韩精品一区二区不卡 | 中文字幕在线观看三区 | 中文字幕在线观看不卡 | 国产黄色大片 | 久久免费视频精品 | 超碰人人在 | 国产91粉嫩白浆在线观看 | 国产色在线视频 | 少妇bbw搡bbbb搡bbb | 91综合视频在线观看 | 国产婷婷久久 | 午夜久久影视 | 97偷拍在线视频 | 黄网站免费看 | 人人干天天射 | 综合久久2023 | 婷婷国产在线观看 | 亚洲丁香久久久 | 国内精品久久久久影院优 | 国产明星视频三级a三级点| 中文字幕av免费观看 | 999久久久免费精品国产 | 日韩免费一区二区在线观看 | 五月婷婷久久丁香 | 中文字幕在线观 | 国产精品九九视频 | 久草电影免费在线观看 | 超碰在线网 | 国产精品乱码久久久 | 91网站在线视频 | 伊人五月天婷婷 | 最新色视频| 一区二区高清在线 | 亚洲好视频 | 亚洲一级黄色av | 97看片吧| 视频国产一区二区三区 | japanesefreesex中国少妇 | 一区二区三区在线免费观看 | 超碰人人av | 免费特级黄毛片 | 亚洲免费av观看 | 亚洲理论影院 | 欧美精选一区二区三区 | 91香蕉嫩草 | 最新中文在线视频 | 国产爽视频 | 美女网站在线播放 | 91精品久久久久久 | 欧美精品亚洲精品 | av黄色在线观看 | 久久天天操| 天天草网站 | 欧美日韩99 | 青草视频在线 | 2000xxx影视| 97超碰中文字幕 | 97理论片| 国产第一页在线播放 | 国产精品色 | 免费福利片2019潦草影视午夜 | 一级片黄色片网站 | 日韩精品久久久免费观看夜色 | 久久中文精品视频 | 西西44人体做爰大胆视频 | 最近日本韩国中文字幕 | 99视频精品在线 | 欧美日韩国产一区二区三区 | 欧美在线视频不卡 | 欧美伦理一区二区三区 | 久久综合9988久久爱 | 色七七亚洲影院 | 五月天亚洲婷婷 | se视频网址 | 日韩欧美xxxx| 亚洲日韩中文字幕在线播放 | 日日干天天射 | 六月婷色| 亚洲特级片 | 久久精品国产99国产 | www五月天婷婷 | 亚洲丁香日韩 | 最新色站 | 在线一级片 | 五月天狠狠操 | 国产日韩欧美在线 | 黄色视屏在线免费观看 | 亚洲精品美女在线观看播放 | 91成人精品 | 一区二区观看 | 国产精品成人自产拍在线观看 | 成人av av在线 | 日韩资源在线观看 | 中文字幕av免费 | 国产综合片 | 天堂av高清| 伊人五月综合 | 精品久久1 | 亚洲欧美在线视频免费 | 欧美日韩在线免费观看 | 92精品国产成人观看免费 | 国内精品久久久久久久久久久久 | 亚洲精品影院在线观看 | 久久久久久久久国产 | 亚洲经典视频 | 日韩三级在线观看 | 黄网站色 | av资源免费在线观看 | 国产美女永久免费 | 免费看的av片 | 成人黄色电影免费观看 | 黄色片亚洲 | 九九热视频在线 | 日本少妇高清做爰视频 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 色婷婷久久一区二区 | 91精品免费看 | 国产高潮久久 | 国产97在线看| 视频在线在亚洲 | 成片免费观看视频999 | 999成人国产 | 亚洲精品动漫成人3d无尽在线 | 精品久久久久久国产 | 日韩一区二区三区在线观看 | 日韩深夜在线观看 | 国产精品福利午夜在线观看 | 欧美日韩免费一区二区 | 亚洲伊人天堂 | 欧美精品中文在线免费观看 | 国内精品99 | 超级碰碰碰免费视频 | 色婷五月 | 国产精品一区在线观看 | 久久av中文字幕片 | 国产精品毛片久久久久久久久久99999999 | 久久av在线| 免费日p视频 | 夜夜躁日日躁 | 色婷婷 亚洲 | 在线视频福利 | 黄色在线观看污 | 日韩网站在线观看 | av 一区二区三区 | 日本免费久久高清视频 | 久久99网 | 久久69av| 色九九影院 | 欧美一级特黄高清视频 | 九九在线国产视频 | 四虎视频 | 久久成人国产精品免费软件 | 成人一区二区三区在线 | 最近中文字幕在线中文高清版 | 亚洲 欧洲 国产 日本 综合 | 国产区av在线 | 国产九九九精品视频 | 欧美日韩电影在线播放 | 毛片视频网址 | 91麻豆精品国产91久久久久久久久 | 亚洲粉嫩av| 中文字幕视频一区 | 国产亚洲精品中文字幕 | 国产精品久久毛片 | 亚洲精品国产日韩 | 国产一级视频在线免费观看 | 99精品久久精品一区二区 | 美女在线免费视频 | 8x8x在线观看视频 | 久久综合给合久久狠狠色 | 久草在| 精品久久久久久久久久久久久久久久久久 | 91精品视频免费在线观看 | 精品视频在线观看 | 麻豆精品传媒视频 | 久久久影院官网 | 日韩视频在线观看免费 | 国产一级不卡毛片 | 97超碰人人 | 天天天干夜夜夜操 | 日韩免费不卡av | 色婷婷久久久综合中文字幕 | 久久婷婷精品 | 久久超碰99| 亚洲福利精品 | 日日操天天操夜夜操 | 国产精品一区在线 | 国产一区二三区好的 | 欧美一区二区伦理片 | 日韩欧美一区二区不卡 | 色婷婷成人 | 欧美日韩网站 | 国产精品一区二区久久精品爱涩 | 成人在线免费看视频 | 免费日韩精品 | 国产精品久久久久四虎 | 在线播放av网址 | 久久久成人精品 | 国产片网站 | 超级碰碰视频 | 顶级bbw搡bbbb搡bbbb | 国产精品久久99精品毛片三a | 国产一区二区在线免费观看 | 国产精品白丝jk白祙 | 国产中文字幕av | 日韩理论在线 | 丝袜制服天堂 | www.91成人 | 国产色婷婷精品综合在线手机播放 | 五月开心六月伊人色婷婷 | 国产男女爽爽爽免费视频 | 美女视频久久 | 国产精品大全 | 亚洲1级片| 中文字幕av在线 | 91超级碰| 正在播放日韩 | 亚洲一二三在线 | 在线一区电影 | 操少妇视频 | 国产精品久久久久久影院 | 亚洲国产精品视频在线观看 | 99久久99久久精品国产片 | 五月天中文字幕mv在线 | 91激情小视频 | 久久人人艹 | 国产精品久久久久久一区二区 | 日日干夜夜骑 | 国产一区二区不卡在线 | 欧美日韩视频一区二区三区 | 久久专区 | 免费av看片 | 日韩欧美视频免费在线观看 | 亚洲高清91 | 欧美日韩国产免费视频 | 色综合中文字幕 | 黄色一级大片在线观看 | 91亚洲精品久久久 | 色小说在线 | 天天插天天| 丁香花在线视频观看免费 | 久久中文字幕视频 | 97国产精品一区二区 | 免费日韩 精品中文字幕视频在线 | 波多野结衣一区二区 | 91九色精品 | 天天操天天综合网 | 天天干天天插伊人网 | 三级av免费 | 成人在线观看免费视频 | 韩国一区二区在线观看 | 亚洲影院一区 | 午夜电影av| 在线观看视频在线 | 亚洲精选国产 | 久久精品理论 | av网站免费看 | 日日天天 | 亚洲韩国一区二区三区 | 麻豆精品传媒视频 | 国产中文字幕在线看 | 久久久久免费精品 | 免费亚洲视频 | 国产精品二区在线 | 福利久久| 911香蕉 | 久久免费国产电影 | www.神马久久 | 日韩在线观看三区 | 亚洲最新av在线 | 日韩成人欧美 | 久久精品视频中文字幕 | 91黄色视屏 | 久久免费视频这里只有精品 | 91爱爱中文字幕 | 亚洲国产色一区 | 久章操 | 亚州精品天堂中文字幕 | 久久久99精品免费观看app | 天天天干夜夜夜操 | 色婷在线| 91欧美日韩国产 | 91九色视频国产 | 日韩免费电影网站 | 久久66热这里只有精品 | 国产一级片网站 | 久久高清毛片 | 久久精品亚洲综合专区 | 亚洲精品国产精品国产 | 五月婷婷中文网 | 国产精品麻豆99久久久久久 | 国产伦精品一区二区三区照片91 | 国产精品美女视频网站 | 91精品国产综合久久久久久久 | 国产 中文 日韩 欧美 | 亚洲综合五月天 | 激情图片久久 | 精品在线观看一区二区 | 最新日韩中文字幕 | 天天干天天射天天爽 | 月丁香婷婷 | 97超碰免费在线 | 色婷婷国产精品一区在线观看 | 国产精品剧情在线亚洲 | 色婷婷亚洲 | 久久公开免费视频 | 欧美在线视频精品 | 九九视频热 | 免费成人在线视频网站 | 一区二区三区在线观看中文字幕 | 欧美黑吊大战白妞欧美 | 色综合久久久久久久 | 久久高清国产视频 | 综合网伊人 | www久久| 国产精品成人免费精品自在线观看 | 亚洲精品视频网 | 国产高清av在线播放 | 深夜激情影院 | 天天色综合天天 | 日韩在线观看电影 | 国产美女视频免费观看的网站 | 国产精品99久久久久久有的能看 | 日韩黄色免费在线观看 | 欧美一级在线观看视频 | 成人国产一区二区 | 国产精品美女久久 | 亚洲专区 国产精品 | 日韩av成人在线观看 | 韩日精品中文字幕 | 就操操久久 | 欧美性性网 | 亚洲最新av网站 | 久久久久网址 | 久久精品三 | 激情欧美网 | 国产精品免费麻豆入口 | 欧美精品久久久久久久 | 久久你懂的 | 国产成人一区二区三区 | 免费 在线 中文 日本 | 国产高清无av久久 | 国产无遮挡又黄又爽馒头漫画 | 一区免费视频 | 麻豆传媒在线免费看 | 免费男女羞羞的视频网站中文字幕 | 亚洲一区视频在线播放 | 日韩精品免费一区二区在线观看 | 99久久久久久久久久 | 国产精品永久在线观看 | 国产精品va最新国产精品视频 | 91av视频在线免费观看 | 国产视频1区2区3区 久久夜视频 | 欧美日韩精品影院 | 国产精品永久免费在线 | 精品国产乱码久久久久 | 国产在线v| 日本在线视频一区二区三区 | 国产1级视频 | www.av中文字幕.com | 99久久精品无码一区二区毛片 | 亚洲经典在线 | 91在线免费视频观看 | 亚洲成a人片在线www | 欧美日韩国产欧美 | 免费色黄 | 免费看色的网站 | 在线观看视频一区二区三区 | 免费人成在线观看网站 | 极品久久久久 | 在线免费av网站 | 午夜精品久久久久 | 国产一区二区精品久久91 | 97精品国自产拍在线观看 | 91黄色影视 | 久久精品一区二区 | 中文字幕在线有码 | 久草在线视频在线观看 | 在线小视频 | 亚洲另类xxxx | 亚洲黄色网络 | 青青河边草免费 | www.五月天色 | 91人人网 | 91福利区一区二区三区 | 午夜影视一区 | 日韩免费 | 久久老司机精品视频 | 久久综合狠狠综合 | 91色欧美| 天天爱天天射天天干天天 | 成人av免费电影 | 最近日本中文字幕 | 99婷婷狠狠成为人免费视频 | 亚洲精品乱码久久久久久写真 | 99久久9| 在线看黄色的网站 | 波多野结衣电影久久 | 一级黄色大片 | 国产专区精品视频 | 丰满少妇对白在线偷拍 | 一区 二区电影免费在线观看 | 日韩在线不卡av | 97碰碰精品嫩模在线播放 | 在线视频精品播放 | 欧美日韩国产一区 | 黄色软件视频大全免费下载 | 亚洲精品黄网站 | 亚洲欧美国产日韩在线观看 | 日韩免费高清 | 久久久婷 | av高清一区二区三区 | .国产精品成人自产拍在线观看6 | 五月婷婷丁香在线观看 | 日韩欧美在线免费 | 97香蕉久久超级碰碰高清版 | 91精品色| 麻豆91网站 | 超碰99在线 | 91xav | 六月丁香激情网 | 亚洲成人一二三 | 91成年视频 | 五月天天色 | 999免费视频 | 欧美一级片在线免费观看 | 国产在线第三页 | 91在线九色 | 久久婷婷国产 | 久草久草在线观看 | 欧美专区亚洲专区 | 欧美一级电影免费观看 | 国产视频一区在线 | 亚洲国产无 | 久久国产精品电影 | 日韩专区在线 | 午夜精品一区二区三区视频免费看 | 999久久久久久久久6666 | 日韩欧美在线播放 | 91 中文字幕 | 日韩av不卡在线 | 一区二区影视 | 国产精品免费在线播放 | 91av色| 国产 亚洲 欧美 在线 | 99中文字幕在线观看 | 91福利视频在线 | 日韩在线视频网 | 欧美亚洲成人xxx | 欧美日韩国产一区二 | 奇米先锋 | 国产五月婷 | wwwwwww色 | 久久神马影院 | 欧美另类xxx | 欧美日韩在线免费观看 | 手机av网站 | 久久久久国产精品一区二区 | 欧美91在线 | 日韩精品最新在线观看 | 国产日韩在线看 | 亚洲精品国产电影 | 91人人爱 | 国产精品久久久久久超碰 | 9在线观看免费高清完整 | 午夜精品一区二区三区在线观看 | 五月在线视频 | 久久在线免费观看 | 草莓视频在线观看免费观看 | 国产精品女 | 91看片在线看片 | 日本公妇在线观看高清 | 91最新网址在线观看 | 欧美精品一区二区在线观看 | 91精品一区二区三区久久久久久 | 天天干,天天射,天天操,天天摸 | 亚洲精品在线视频网站 | 国产老熟| 久久激情视频 久久 | 毛片3 |