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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

10.高效分布

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

實例練習:

?? 給一數據表中的數據顯示出來,每10條為一頁。

? 1.建立數據表及強類型數據集(操作步驟忽略)

? 2.在強類型數據集中建立以下過程:GetAllData方法:SELECT COUNT(*) FROM T_User,主要是得到總的記錄數。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 主要是用于得到哪一頁中的數據。要手工增加@startrow和@pagecounts參數,這兩個參數沒有嚴格按照以上的參數來設置,記得以后要修改ObjectDataSource中的相關屬性。

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

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

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="高效分布.aspx.cs" Inherits="行命令設置.高效分布" %><!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="行命令設置.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>未返回數據。</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.生成解決方案后運行,你會發現可以正常分頁了,但會發現不論是第一頁還是第4頁時,地址欄都是沒有變化的,當你想把第3頁的連接給一個朋友看時,會發現當打開這個連接時顯示的還是第一頁。 我們可以在? DataPager的屬性中設置QueryStringField值為"pagenum"。這樣你再運行點擊第一頁的連接時,會在地址欄中顯示?pagenum=...這樣的數據,當你要把第三頁的內容給朋友時,只要地址欄中有pagenum=這樣的字樣就可以直接查看第3頁的數據了。

轉載于:https://www.cnblogs.com/yagzh2000/p/3169797.html

總結

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

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