日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

10.高效分布

發(fā)布時(shí)間:2023/12/19 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10.高效分布 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • ListView默認(rèn)的分頁是先從數(shù)據(jù)源取得所有數(shù)據(jù),然后再截取當(dāng)前頁面的部分,在數(shù)據(jù)量非常大的情況下效率非常低,因此默認(rèn)的分布基本不能用。應(yīng)該是只從數(shù)據(jù)源取得要顯示的數(shù)據(jù)即可。
  • SQL中語句中取得分頁數(shù)據(jù)的方法為:Select * ,ROW_NUMBER() over(order by 排序字段) as rownum From Table. ROW_NUMBER()函數(shù)是SQL2005之后提供的一個(gè)計(jì)算結(jié)果集行數(shù)的函數(shù),over中指定排序規(guī)則,Row_Number()從1開始。只是把數(shù)據(jù)中的記錄從1排序。
  • SQL語句可以這樣排序:Select * from (Select id,name,age,Row_Number() over(order by id) rownum from table1) as t1 where t1.rownum>50 and t1.rownum<=100,取第51到100條的記錄。
  • 在強(qiáng)類型DataSet中增加取得所有數(shù)據(jù)條數(shù)的方法QueryCount,增加取得指定行數(shù)范圍數(shù)據(jù)的方法GetPagedData:Select * from (select ...,ROW_NUMBER() over(order by ...) rownum from table1) t where t.rownum>@startRowIndex and t.rownum<=@startRowIndex+@maximumRows.
  • 由于數(shù)據(jù)集編輯器不支持(不是運(yùn)行時(shí)不支持,只是設(shè)計(jì)器不會(huì)自動(dòng)幫我們生成一些東西)ROW_NUMBER(),所以創(chuàng)建完成后需要手動(dòng)在GetPagedData屬性的Parameters中增加兩個(gè)參數(shù):startRowIndex,maximumRows(參數(shù)名必須是這兩個(gè),這是由ObjectDataSource的StartRowIndexParamterName\MaximumRowsParamterName確定的,一般不需要改,當(dāng)然你也可以用其它名稱,但要在屬性中改成你自己的名字),都為Int32類型。
  • 先按照正常的流程配置ObjectDataSource,讓ListView自動(dòng)生成Template,再修改ObjectDataSource的EnablePaging="True",SelectCountMethod設(shè)置為取得行數(shù)的方法。
  • ObjectDataSource中EnablePaging屬性設(shè)置為True,SelectCountMethod設(shè)置為QueryCount,SelectMethod設(shè)置為GetPagedData.
  • 如果出錯(cuò)的話看看是不是沒有放置內(nèi)置的DataPager或者外置的DataPager的PagedControlID沒有指向ListView.
  • DataPager默認(rèn)是用PostBack機(jī)制,顯示不到地址中,不利于網(wǎng)友間共享,只要指定QueryStringField屬性(比如pagenum)就可以實(shí)現(xiàn)超連接形式的分布連接。

實(shí)例練習(xí):

?? 給一數(shù)據(jù)表中的數(shù)據(jù)顯示出來,每10條為一頁。

? 1.建立數(shù)據(jù)表及強(qiáng)類型數(shù)據(jù)集(操作步驟忽略)

? 2.在強(qiáng)類型數(shù)據(jù)集中建立以下過程:GetAllData方法:SELECT COUNT(*) FROM T_User,主要是得到總的記錄數(shù)。GetPageCount方法:select id, name, age from
(
SELECT id, name, age,ROW_NUMBER() over(order by id) rownumber FROM dbo.T_User
) t where t.rownumber>@startrow and t.rownumber<=@startrow+@pagecounts 主要是用于得到哪一頁中的數(shù)據(jù)。要手工增加@startrow和@pagecounts參數(shù),這兩個(gè)參數(shù)沒有嚴(yán)格按照以上的參數(shù)來設(shè)置,記得以后要修改ObjectDataSource中的相關(guān)屬性。

? 3.在web表單上放上ObjectDataSource和ListView,先按正常的配置進(jìn)行操作和分頁功能。再在ObjectDataSource的向?qū)нM(jìn)行操作,在“定義方法”中選擇GetPageCount來得到每頁的值,其它的不用處理 。

? 4.修改ObjectDataSource的相關(guān)屬性,記著要設(shè)置EnablePaging為true哦。如下圖源碼:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="高效分布.aspx.cs" Inherits="行命令設(shè)置.高效分布" %><!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> </head> <body><form id="form1" runat="server"><div><asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="Delete" EnablePaging="True" InsertMethod="Insert" MaximumRowsParameterName="pagecounts" OldValuesParameterFormatString="original_{0}" SelectCountMethod="GetAllData" SelectMethod="GetPageCount" StartRowIndexParameterName="startrow" TypeName="行命令設(shè)置.DAL.DataSetUserTableAdapters.T_UserTableAdapter" UpdateMethod="Update"><DeleteParameters><asp:Parameter Name="Original_id" Type="Int32" /></DeleteParameters><InsertParameters><asp:Parameter Name="name" Type="String" /><asp:Parameter Name="age" Type="Int32" /></InsertParameters><UpdateParameters><asp:Parameter Name="name" Type="String" /><asp:Parameter Name="age" Type="Int32" /><asp:Parameter Name="Original_id" Type="Int32" /></UpdateParameters></asp:ObjectDataSource><asp:ListView ID="ListView1" runat="server" DataKeyNames="id" DataSourceID="ObjectDataSource1" InsertItemPosition="LastItem"><AlternatingItemTemplate><tr style=""><td><asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="刪除" /><asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="編輯" /></td><td><asp:Label ID="idLabel" runat="server" Text='<%# Eval("id") %>' /></td><td><asp:Label ID="nameLabel" runat="server" Text='<%# Eval("name") %>' /></td><td><asp:Label ID="ageLabel" runat="server" Text='<%# Eval("age") %>' /></td></tr></AlternatingItemTemplate><EditItemTemplate><tr style=""><td><asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="更新" /><asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="取消" /></td><td><asp:Label ID="idLabel1" runat="server" Text='<%# Eval("id") %>' /></td><td><asp:TextBox ID="nameTextBox" runat="server" Text='<%# Bind("name") %>' /></td><td><asp:TextBox ID="ageTextBox" runat="server" Text='<%# Bind("age") %>' /></td></tr></EditItemTemplate><EmptyDataTemplate><table runat="server" style=""><tr><td>未返回?cái)?shù)據(jù)。</td></tr></table></EmptyDataTemplate><InsertItemTemplate><tr style=""><td><asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="插入" /><asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="清除" /></td><td>&nbsp;</td><td><asp:TextBox ID="nameTextBox" runat="server" Text='<%# Bind("name") %>' /></td><td><asp:TextBox ID="ageTextBox" runat="server" Text='<%# Bind("age") %>' /></td></tr></InsertItemTemplate><ItemTemplate><tr style=""><td><asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="刪除" /><asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="編輯" /></td><td><asp:Label ID="idLabel" runat="server" Text='<%# Eval("id") %>' /></td><td><asp:Label ID="nameLabel" runat="server" Text='<%# Eval("name") %>' /></td><td><asp:Label ID="ageLabel" runat="server" Text='<%# Eval("age") %>' /></td></tr></ItemTemplate><LayoutTemplate><table runat="server"><tr runat="server"><td runat="server"><table ID="itemPlaceholderContainer" runat="server" border="0" style=""><tr runat="server" style=""><th runat="server"></th><th runat="server">id</th><th runat="server">name</th><th runat="server">age</th></tr><tr ID="itemPlaceholder" runat="server"></tr></table></td></tr><tr runat="server"><td runat="server" style=""><asp:DataPager ID="DataPager1" runat="server" QueryStringField="pagenum"><Fields><asp:NumericPagerField /></Fields></asp:DataPager></td></tr></table></LayoutTemplate><SelectedItemTemplate><tr style=""><td><asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="刪除" /><asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="編輯" /></td><td><asp:Label ID="idLabel" runat="server" Text='<%# Eval("id") %>' /></td><td><asp:Label ID="nameLabel" runat="server" Text='<%# Eval("name") %>' /></td><td><asp:Label ID="ageLabel" runat="server" Text='<%# Eval("age") %>' /></td></tr></SelectedItemTemplate></asp:ListView><asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" /></div></form> </body> </html>

?5.生成解決方案后運(yùn)行,你會(huì)發(fā)現(xiàn)可以正常分頁了,但會(huì)發(fā)現(xiàn)不論是第一頁還是第4頁時(shí),地址欄都是沒有變化的,當(dāng)你想把第3頁的連接給一個(gè)朋友看時(shí),會(huì)發(fā)現(xiàn)當(dāng)打開這個(gè)連接時(shí)顯示的還是第一頁。 我們可以在? DataPager的屬性中設(shè)置QueryStringField值為"pagenum"。這樣你再運(yùn)行點(diǎn)擊第一頁的連接時(shí),會(huì)在地址欄中顯示?pagenum=...這樣的數(shù)據(jù),當(dāng)你要把第三頁的內(nèi)容給朋友時(shí),只要地址欄中有pagenum=這樣的字樣就可以直接查看第3頁的數(shù)據(jù)了。

轉(zhuǎn)載于:https://www.cnblogs.com/yagzh2000/p/3169797.html

總結(jié)

以上是生活随笔為你收集整理的10.高效分布的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。