思路是清晰,就是不知道用什么型別儲存那一頁,想做成像網易云那樣的效果。
哪些前輩有這經驗的,可以留言或者代碼提示一下,謝謝。
uj5u.com熱心網友回復:
分頁思路是通用的,你要做的就是自己定義一個組合控制元件(把上一頁、下一頁、跳轉等按鈕),然后在按鈕事件中寫邏輯傳參(第幾頁、每頁多少條)呼叫即可。https://blog.csdn.net/chinacsharper/article/details/9095387
uj5u.com熱心網友回復:
網易云是網頁啊!uj5u.com熱心網友回復:
pc版的網易云呀
uj5u.com熱心網友回復:
也是網頁,有cefuj5u.com熱心網友回復:
無所謂是b/s還是c/s。你只要明白分頁邏輯,抓取到List資料,
系結在哪里,有什么不一樣的呢。
uj5u.com熱心網友回復:
cef是啥???我只是想做成wpf那種效果也是像網易云音樂那種效果,界面的切換。
uj5u.com熱心網友回復:
用panel控制元件怎么完成這些切換?然后讀取資料?
uj5u.com熱心網友回復:
或者點擊panel標簽后啟動表單?也行嗎??
uj5u.com熱心網友回復:
就是上下頁的按鈕,傳遞不同的當前頁標。
然后后臺根據頁標(currentPage)和每頁顯示數量(pageSize),計算出具體的id或者row_number的范圍。
類似于 select * from 表 where id>=10 and id<20
(between會兩邊閉區間,所以不太正確。)
uj5u.com熱心網友回復:
這種你每一頁都用一個panel,點擊下一頁的時候,把引數保存下來,并且把前一個panel隱藏,后一個panel顯示即可,點上一頁再把引數加載回來就行了,就是控制元件的隱藏和顯示,沒什么難度吧uj5u.com熱心網友回復:
很簡單,不管你點擊上一頁、下一頁還是最后一頁,你都是在向資料庫傳遞兩個引數:頁索引和每頁記錄條數,有了這兩個引數,你就能在資料庫里做分頁查詢了,查完之后回傳給datagridview就行uj5u.com熱心網友回復:
桌面程式就是用paneluj5u.com熱心網友回復:
這個邏輯應該是通用的,后臺把資料切割好,然后運用按鈕的點擊事件來控制要顯示的切割好的資料,不論是用系結的方式還是原始的一行一行展示的方式,都可以達到你想要的效果uj5u.com熱心網友回復:
兩個技術點:1、知道查詢怎么分頁
2、自定義客戶端組件,組件包括gridview,上一頁下一頁,頁號等控制元件
uj5u.com熱心網友回復:
這種你每一頁都用一個panel,點擊下一頁的時候,把引數保存下來,并且把前一個panel隱藏,后一個panel顯示即可,點上一頁再把引數加載回來就行了,就是控制元件的隱藏和顯示,沒什么難度吧
uj5u.com熱心網友回復:
總頁數 = Math.Ceiling(總記錄數/每頁顯示記錄數)生成樣式:[1]...[12][13][14][15][16][17][18][19]...[88]
當前頁區別顏色顯示,點擊那個頁碼(fPage_Ing),發生變化。
顯示根據頁碼乘以每頁記錄數量。
代碼里摘出來的,就大概這么個意思,自個改改
C# c/s的
public static void Paging(int fPage_Ing)
{
int fPage_Count = 總頁數
string pageStr = "";
if (fPage_Ing > fPage_Count) fPage_Ing = fPage_Count;
int p_begin, p_end;
bool view_first, view_last;
if (fPage_Count <= 10)
{
p_begin = 0;
p_end = fPage_Count;
view_first = false;
view_last = false;
}
else
{
p_begin = (fPage_Ing - 1) - 5;
if (p_begin <= 0)
{
p_begin = 0;
p_end = 10;
view_first = false;
view_last = true;
}
else
{
p_end = p_begin + 10;
if (p_end >= fPage_Count)
{
p_begin = fPage_Count - 10;
p_end = fPage_Count;
view_first = true;
view_last = false;
}
else
{
p_end = p_begin + 10;
view_first = true;
view_last = true;
}
}
}
for (int i = p_begin; i < p_end; i++)
{
if ((i + 1) == fPage_Ing)
{
pageStr += "[" + (i + 1) + "],";
}
else
{
pageStr += "[" + (i + 1) + "],";
}
}
if (view_first)
{
pageStr = "[1] ," + "... ," + pageStr + ",";
}
if (view_last)
{
pageStr += "... ,[" + fPage_Count + "],";
}
string[] pnum = pageStr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 13; i > -1; i--) page_codeLabel[i].Visible = false;
for (int i = pnum.Length - 1; i > -1; i--)
{
page_codeLabel[i].AutoSize = true;
page_codeLabel[i].Text = pnum[i];
if (page_codeLabel[i].Text.Replace("[", "").Replace("]", "") == (Preview_Num + 1).ToString())
{
page_codeLabel[i].ForeColor = PageCode_SelectedColor;
}
else
{
page_codeLabel[i].ForeColor = PageCode_TextColor;
}
}
for (int i = pnum.Length - 1; i > -1; i--) page_codeLabel[i].Visible = true;
}
b/s的,c#改java的,C#java差不多,基本不用怎么改
/*取得資料庫記錄數*/
public static int GetPageCount(int paging,String tableName, String terms, String search)
{
int _page = getRecordCount(tableName,terms,search) / paging;
if (_page < ((double)getRecordCount(tableName,terms,search) / (double)paging)) _page += 1;
if (_page<1) _page =1;
return _page;
}
public static String[] Paging (int fPage_Ing,String tableName,int fPage_Pading,String terms,String search)
{
int fPage_Count; //總頁數
String pageStr = "";
fPage_Count = GetPageCount(fPage_Pading,tableName,terms,search);
if (fPage_Ing>fPage_Count) fPage_Ing=fPage_Count;
int p_begin = 0, p_end = 10;
boolean view_first, view_last;
if (fPage_Count <= 10)
{
p_begin = 0;
p_end = fPage_Count;
view_first = false;
view_last = false;
}
else
{
p_begin = (fPage_Ing - 1) - 5;
if (p_begin <= 0)
{
p_begin = 0;
p_end = 10;
view_first = false;
view_last = true;
}
else
{
p_end = p_begin + 10;
if (p_end >= fPage_Count)
{
p_begin = fPage_Count - 10;
p_end = fPage_Count;
view_first = true;
view_last = false;
}
else
{
p_end = p_begin + 10;
view_first = true;
view_last = true;
}
}
}
for (int i = p_begin; i < p_end; i++)
{
if ((i+1)==fPage_Ing) {
pageStr += "[<button style=\"outline: none;color:#ffff00;font-size: 1.2rem;border:0px;background:transparent;cursor: pointer\">" +
(i + 1) + "</button>] ";
} else {
pageStr += "[<button onclick=\"ajaxGetPaging(" + (i+1) + ")\" style=\"outline: none;color:#fff;font-size: 0.85rem;border:0px;background:transparent;cursor: pointer\">" +
(i + 1) + "</button>] ";
}
}
if (view_first)
{
pageStr = "[<button onclick=\"ajaxGetPaging(1)\" style=\"outline: none;color:#fff;font-size: 0.85rem;border:0px;background:transparent;cursor: pointer\">"+
"1</button>] "+" ... " +pageStr;
}
if (view_last)
{
pageStr +=" ... [<button onclick=\"ajaxGetPaging("+fPage_Count+")\" style=\"outline: none;color:#fff;font-size: 0.85rem;border:0px;background:transparent;cursor: pointer\">"+
fPage_Count+"</button>] ";
}
pageStr += " ";
String[] strArr = new String[2];
strArr[0] = pageStr; //回傳第一個值
strArr[1] = fPage_Ing+"";//回傳第一個值
return strArr;
}
uj5u.com熱心網友回復:
接上面,示例圖
uj5u.com熱心網友回復:
zhangjianshileuj5u.com熱心網友回復:
接上面,示例圖
這個是操作panel控制元件做頁數嗎?
uj5u.com熱心網友回復:
總頁數 = Math.Ceiling(總記錄數/每頁顯示記錄數)
生成樣式:[1]...[12][13][14][15][16][17][18][19]...[88]
當前頁區別顏色顯示,點擊那個頁碼(fPage_Ing),發生變化。
顯示根據頁碼乘以每頁記錄數量。
代碼里摘出來的,就大概這么個意思,自個改改
C# c/s的
public static void Paging(int fPage_Ing)
{
int fPage_Count = 總頁數
string pageStr = "";
if (fPage_Ing > fPage_Count) fPage_Ing = fPage_Count;
int p_begin, p_end;
bool view_first, view_last;
if (fPage_Count <= 10)
{
p_begin = 0;
p_end = fPage_Count;
view_first = false;
view_last = false;
}
else
{
p_begin = (fPage_Ing - 1) - 5;
if (p_begin <= 0)
{
p_begin = 0;
p_end = 10;
view_first = false;
view_last = true;
}
else
{
p_end = p_begin + 10;
if (p_end >= fPage_Count)
{
p_begin = fPage_Count - 10;
p_end = fPage_Count;
view_first = true;
view_last = false;
}
else
{
p_end = p_begin + 10;
view_first = true;
view_last = true;
}
}
}
for (int i = p_begin; i < p_end; i++)
{
if ((i + 1) == fPage_Ing)
{
pageStr += "[" + (i + 1) + "],";
}
else
{
pageStr += "[" + (i + 1) + "],";
}
}
if (view_first)
{
pageStr = "[1] ," + "... ," + pageStr + ",";
}
if (view_last)
{
pageStr += "... ,[" + fPage_Count + "],";
}
string[] pnum = pageStr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 13; i > -1; i--) page_codeLabel[i].Visible = false;
for (int i = pnum.Length - 1; i > -1; i--)
{
page_codeLabel[i].AutoSize = true;
page_codeLabel[i].Text = pnum[i];
if (page_codeLabel[i].Text.Replace("[", "").Replace("]", "") == (Preview_Num + 1).ToString())
{
page_codeLabel[i].ForeColor = PageCode_SelectedColor;
}
else
{
page_codeLabel[i].ForeColor = PageCode_TextColor;
}
}
for (int i = pnum.Length - 1; i > -1; i--) page_codeLabel[i].Visible = true;
}
b/s的,c#改java的,C#java差不多,基本不用怎么改
/*取得資料庫記錄數*/
public static int GetPageCount(int paging,String tableName, String terms, String search)
{
int _page = getRecordCount(tableName,terms,search) / paging;
if (_page < ((double)getRecordCount(tableName,terms,search) / (double)paging)) _page += 1;
if (_page<1) _page =1;
return _page;
}
public static String[] Paging (int fPage_Ing,String tableName,int fPage_Pading,String terms,String search)
{
int fPage_Count; //總頁數
String pageStr = "";
fPage_Count = GetPageCount(fPage_Pading,tableName,terms,search);
if (fPage_Ing>fPage_Count) fPage_Ing=fPage_Count;
int p_begin = 0, p_end = 10;
boolean view_first, view_last;
if (fPage_Count <= 10)
{
p_begin = 0;
p_end = fPage_Count;
view_first = false;
view_last = false;
}
else
{
p_begin = (fPage_Ing - 1) - 5;
if (p_begin <= 0)
{
p_begin = 0;
p_end = 10;
view_first = false;
view_last = true;
}
else
{
p_end = p_begin + 10;
if (p_end >= fPage_Count)
{
p_begin = fPage_Count - 10;
p_end = fPage_Count;
view_first = true;
view_last = false;
}
else
{
p_end = p_begin + 10;
view_first = true;
view_last = true;
}
}
}
for (int i = p_begin; i < p_end; i++)
{
if ((i+1)==fPage_Ing) {
pageStr += "[<button style=\"outline: none;color:#ffff00;font-size: 1.2rem;border:0px;background:transparent;cursor: pointer\">" +
(i + 1) + "</button>] ";
} else {
pageStr += "[<button onclick=\"ajaxGetPaging(" + (i+1) + ")\" style=\"outline: none;color:#fff;font-size: 0.85rem;border:0px;background:transparent;cursor: pointer\">" +
(i + 1) + "</button>] ";
}
}
if (view_first)
{
pageStr = "[<button onclick=\"ajaxGetPaging(1)\" style=\"outline: none;color:#fff;font-size: 0.85rem;border:0px;background:transparent;cursor: pointer\">"+
"1</button>] "+" ... " +pageStr;
}
if (view_last)
{
pageStr +=" ... [<button onclick=\"ajaxGetPaging("+fPage_Count+")\" style=\"outline: none;color:#fff;font-size: 0.85rem;border:0px;background:transparent;cursor: pointer\">"+
fPage_Count+"</button>] ";
}
pageStr += " ";
String[] strArr = new String[2];
strArr[0] = pageStr; //回傳第一個值
strArr[1] = fPage_Ing+"";//回傳第一個值
return strArr;
}
大哥大哥,,麻煩你了,,,我只是做了兩個按鈕,一個是上一頁一個是下一頁,我只是想儲存到本地,而不是資料庫,不過也謝謝你了。
uj5u.com熱心網友回復:
你是想存到本地嗎?你的那些資料從哪里來的?本地資料加載,然后上一頁下一頁?
uj5u.com熱心網友回復:
你是想存到本地嗎?你的那些資料從哪里來的?本地資料加載,然后上一頁下一頁?
那還有什么例子??
是不是要運用到for回圈和陣列?
讀資料庫的頁數大概怎么做???
uj5u.com熱心網友回復:
你是想存到本地嗎?你的那些資料從哪里來的?本地資料加載,然后上一頁下一頁?
那還有什么例子??
是不是要運用到for回圈和陣列?
讀資料庫的頁數大概怎么做???
具體告訴我你的需求我告訴你大概思路方法
uj5u.com熱心網友回復:
你是想存到本地嗎?你的那些資料從哪里來的?本地資料加載,然后上一頁下一頁?
那還有什么例子??
是不是要運用到for回圈和陣列?
讀資料庫的頁數大概怎么做???
具體告訴我你的需求我告訴你大概思路方法
當我點擊一個按鈕打開表單時參考pageInsrtRecord(//這里是記錄表單名),想存盤到string陣列里面
然后用戶點[imag]https://img.uj5u.com/2020/09/15/79821151556464.png[/imag]上一頁按鈕時,倒著讀取string陣列,讀到并置頂panel(里面有表單)控制元件,如果用戶想回傳剛剛打開的那頁,重新置頂之前打開的那頁。
就像pc端網易云音樂那樣。
uj5u.com熱心網友回復:
你是想存到本地嗎?你的那些資料從哪里來的?本地資料加載,然后上一頁下一頁?
那還有什么例子??
是不是要運用到for回圈和陣列?
讀資料庫的頁數大概怎么做???
具體告訴我你的需求我告訴你大概思路方法
當我點擊一個按鈕打開表單時參考pageInsrtRecord(//這里是記錄表單名),想存盤到string陣列里面
然后用戶點[imag]https://img.uj5u.com/2020/09/15/79821151556464.png[/imag]上一頁按鈕時,倒著讀取string陣列,讀到并置頂panel(里面有表單)控制元件,如果用戶想回傳剛剛打開的那頁,重新置頂之前打開的那頁。
就像pc端網易云音樂那樣。
uj5u.com熱心網友回復:
學習一下 最近在用uj5u.com熱心網友回復:
winform牛X的地方就是一下可以加載成千上萬的資料,你居然要分頁uj5u.com熱心網友回復:
winform牛X的地方就是一下可以加載成千上萬的資料,你居然要分頁
我是想仿網易云那要的
uj5u.com熱心網友回復:
你意思是,從一個陣列里面,匯出內容,例如索引0就是第一頁,所以1就是第二頁以此類推,然后上一頁就上一個下一頁就下一個?
你是想存到本地嗎?你的那些資料從哪里來的?本地資料加載,然后上一頁下一頁?
那還有什么例子??
是不是要運用到for回圈和陣列?
讀資料庫的頁數大概怎么做???
具體告訴我你的需求我告訴你大概思路方法
當我點擊一個按鈕打開表單時參考pageInsrtRecord(//這里是記錄表單名),想存盤到string陣列里面
然后用戶點[imag]https://img.uj5u.com/2020/09/15/79821151556464.png[/imag]上一頁按鈕時,倒著讀取string陣列,讀到并置頂panel(里面有表單)控制元件,如果用戶想回傳剛剛打開的那頁,重新置頂之前打開的那頁。
就像pc端網易云音樂那樣。
對!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/48079.html
標籤:C#
