顯示具有 Repeater 標籤的文章。 顯示所有文章
顯示具有 Repeater 標籤的文章。 顯示所有文章

2016年12月21日 星期三

無限下拉的資料呈現 (類似FaceBook,分頁效果)#1 - jQuery + Web Service + Repeater控制項

類似臉書(FaceBook),您一直向下閱讀資訊。到了瀏覽器底部又會長出(呈現出)新的數據。
這也是一種「分頁」的技巧。參考網路上的範例,我改用SQL 2012的 OFFSET...FETCH 來做 (本文提供範例下載 & Youtube教學影片)

您可以先到原網站看看 Demo效果。VB & C#範例都有。

原作者  使用 SQL 2005起的「資料分頁 - Row_Number」來做,
搭配 Repeater控制項 + Web Service + jQuery三者,算是一個整合範例。

簡單地說,流程如下:
    (1).  第一次執行時,展示十筆記錄。
    (2). 當您拉到網頁下方時,觸發 jQuery效果,以AJAX的方式跟Web Service查詢接下來的「後十筆」記錄,並在畫面上繪製表格。
        $(window).scroll(function () {
            if ($(window).scrollTop() == $(document).height() - $(window).height()) {
                  // 您的程式......
            }
        });
    (3).  如此周而復始,就好像臉書(FaceBook)一樣,您一直向下閱讀,資料源源不絕,沒完沒了。

這些技巧以前都有分享過,請看:
................................................................................................................................................
................................................................................................................................................

YouTuber教學影片  https://youtu.be/h5Zof9ZZRP4
  
我修改成 SQL 2012的資料分頁( OFFSET...FETCH)作法,原理差不多。
 速度比起 ROW_Number差不多, 但比較起來,新的寫法比 ROW_Number省資源 
-----------------------------------------------------------------------------------------------------
首先,使用 Repeater控制項。
這東西比較單純,也不會產生過多的怪標籤。有利於後續搭配 jQuery大量複製 HTML表格(

畫面的部分,我沒有修正,您可以參閱原範例

我主要修正後置程式碼 C# 的部分,不像原範例還需要一段SQL Server預存程序來做。
using System.Data;
using System.Data.SqlClient;
using System.Web.Services;  //*** Web Service 會用到 ***
using System.Web.Configuration;


    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)  // 第一次執行
        {   // 自己寫的副程式,從第一頁開始。
            Repeater1.DataSource = MIS2000Lab_GetPageData(1);   
            Repeater1.DataBind();
        }
    }


    // ***** 分頁。使用SQL指令進行分頁 *****
    public static DataSet MIS2000Lab_GetPageData(int currentPage)
    {
        SqlConnection Conn = new SqlConnection("資料庫的連結字串");

        String SqlStr = "Select * from Customers ORDER BY [CustomerID] ASC ";
        SqlStr += " OFFSET @A ROWS FETCH NEXT 10 ROWS ONLY";
        // 為了配合前端的jQeury,這裡的第一頁不可以是"零",需是一。程式改成 ((currentPage-1) * 10)
        //==SQL 2012 指令的 Offset...Fetch。參考資料: http://sharedderrick.blogspot.tw/2012/06/t-sql-offset-fetch.html  

        SqlDataAdapter myAdapter = new SqlDataAdapter(SqlStr, Conn);
        myAdapter.SelectCommand.Parameters.AddWithValue("@A", ((currentPage - 1) * 10));       
        DataSet ds = new DataSet();
        myAdapter.Fill(ds, "Customers");

        //-- 用來計算分頁的「總頁數」 ---      
        SqlCommand cmd = new SqlCommand("select Count(CustomerID) from Customers", Conn);
        Conn.Open();           
        int myTotalCount = (int)cmd.ExecuteScalar();

        DataTable dt = new DataTable("PageCount");
        dt.Columns.Add("PageCount");
        dt.Rows.Add();
        dt.Rows[0][0] = myTotalCount;
        ds.Tables.Add(dt);

        if (Conn.State == ConnectionState.Open)  {
            Conn.Close();
            Conn.Dispose();
        }

        return ds;
    }

    
    [WebMethod]
    public static string GetCustomers(int pageIndex)
    {
        return MIS2000Lab_GetPageData(pageIndex).GetXml();
    }

因為要搭配前端的 jQuery,所以上述程式的「第一頁」,不寫成「0」而改成「1」。
您要修改 "前端" HTML畫面時,要注意幾點:

抱歉,因為程式碼貼上後,排版錯亂,只好貼圖!

或是來這裡,複製程式碼 -- http://mis2000lab.pixnet.net/blog/post/34529733-%E7%84%A1%E9%99%90%E4%B8%8B%E6%8B%89%E7%9A%84%E8%B3%87%E6%96%99%E5%91%88%E7%8F%BE%20(%E9%A1%9E%E4%BC%BCFaceBook%EF%BC%8C%E5%88%86%E9%A0%81%E6%95%88%E6%9E%9C)%20-%20jQuery%20+%20Web%20Service%20+%20Repeater%E6%8E%A7%E5%88%B6%E9%A0%85


分享,讓知識更加偉大  :-)

檔名:
      [CS]無限下拉的Repeater_jQeury_WebService.rar
      [VB]無限下拉的Repeater_jQeury_WebService.rar

下一篇文章(相關範例)

  
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
寫信給我--  mis2000lab (at) yahoo.com.台灣  或是  school (at) mis2000lab.net
................   facebook社團   https://www.facebook.com/mis2000lab   ......................
................   Google+   https://plus.google.com/100202398389206570368/posts ........
................  YouTube (ASP.NET) 線上教學影片  http://goo.gl/rGLocQ



下一篇文章:    http://mis2000lab.blogspot.tw/2016/12/facebook-2.html

無限下拉的資料呈現 (類似FaceBook,分頁效果) #2 - 圖片版的首頁

http://mis2000lab.blogspot.tw/2016/12/facebook-2.html

2011年9月8日 星期四

[Repeater]三個事件的執行先後?ItemDataBound / ItemCreated / ItemCommand

這是我的文章備份,我不常來這裡更新文章
如果您希望學習地一手的資訊,
別忘了到我的網站去看看:

[Repeater]三個事件的執行先後?ItemDataBound / ItemCreated / ItemCommand

http://www.dotblogs.com.tw/mis2000lab/archive/2011/09/07/repeater_itemdatabound_itemcreated_itemcommand.aspx


之前已經有一篇類似的文章了,

請看:GridView的 RowCreated事件與 RowDataBound事件的小差異
http://www.dotblogs.com.tw/mis2000lab/archive/2010/10/13/gridview_rowcreated_rowdatabound.aspx

也推薦 MSDN這三篇文章,裡面的範例淺顯易懂。

完成後,才接以下的內容。

Repeater.ItemDataBound 事件
http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.repeater.itemdatabound.aspx

Repeater.ItemCreated 事件
http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.repeater.itemcreated.aspx

Repeater.ItemCommand 事件
http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.repeater.itemcommand.aspx

請看以下兩張圖片的解說:

是的,我正在寫新書(寫一本範例大全、

類似 ASP.NET控制項的各種屬性、方法、事件,每一個都提供範例作參考,這樣學習最深入)

所以直接貼 Word的畫面截圖,請見諒。


............................. 寫信給我,mis2000lab (at) yahoo.com.台灣......

ASP.NET 4.0 專題實務(松崗出版)

上 / 下兩集合購。優惠價1,180元(免郵資)

上集( .NET 4.0版)全新改寫。範例增加66%,內容增加35%。上市以來,熱銷五刷

下集(第二版,黑皮書)上市一個月熱銷再刷,2010一年內(第一版)熱銷四刷第二版半年熱銷四刷! 下集內容增加66%。

上下兩集將近2,000頁,堪稱國內 [最詳盡]的ASP.NET範例教學。

南無普光佛  南無普明佛  南無普淨佛  南無多摩羅跋栴檀香佛  南無栴檀光佛  南無摩尼幢佛  南無歡喜藏摩尼寶積佛  南無一切世間樂見上大精進佛  南無摩尼幢燈光佛
南無慧炬照佛  南無海德光明佛  南無金剛牢強普散金光佛  南無大強精進勇猛佛  南無大悲光佛  南無慈力王佛  南無慈藏佛  南無栴檀窟莊嚴勝佛  南無賢善首佛
南無善意佛  南無廣莊嚴王佛  南無金華光佛  南無寶蓋照空自在力王佛  南無虛空寶華光佛 南無琉璃莊嚴王佛  南無普現色身光佛  南無不動智光佛 南無降伏眾魔王佛  
南無才光明佛 南無智慧勝佛  南無彌勒仙光佛  南無善寂月音妙尊智王佛  南無世淨光佛  南無龍種上尊王佛  南無日月光佛 南無日月珠光佛  南無慧幢勝王佛  
南無師子吼自在力王佛  南無妙音勝佛  南無常光幢佛  南無觀世燈佛 南無慧威燈王佛  南無法勝王佛  南無須彌光佛 南無須曼那華光佛 南無優曇鉢羅華殊勝王佛  
南無大慧力王佛  南無阿閦毗歡喜光佛  南無無量音聲王佛  南無才光佛  南無金海光佛  南無山海慧自在通王佛  南無大通光佛  南無一切法常滿王佛  南無釋迦牟尼佛
南無金剛不壞佛  南無寶光佛  南無龍尊王佛  南無精進軍佛  南無精進喜佛  南無寶火佛  南無寶月光佛  南無現無愚佛  南無寶月佛  南無無垢佛  南無離垢佛  
南無勇施佛  南無清淨佛  南無清淨施佛  南無娑留那佛  南無水天佛  南無堅德佛  南無栴檀功德佛  南無無量掬光佛  南無光德佛  南無無憂德佛
南無那羅延佛  南無功德華佛  南無蓮華光遊戲神通佛  南無財功德佛  南無德念佛  南無善名稱功德佛  南無紅燄帝幢王佛  南無善遊步功德佛 南無鬪戰勝佛
南無善遊步佛  南無周匝莊嚴功德佛  南無寶華遊步佛  南無寶蓮華善住娑羅樹王佛  南無法界藏身阿彌陀佛

............................. 寫信給我,mis2000lab (at) yahoo.com.台灣......