解決asp.net中repeater控制項的顯示數量控制

來源:互聯網
上載者:User

標籤:

  在使用oracle時,沒有top這個屬性,如果想限制查詢數量,必須使用偽欄位ROWNUM

 

 

 

 

可以看到這裡第一列沒有title的欄位就是rownum欄位,在oracle插入資料的時候內建的,無需人為添加。

我們如果想要實現控制查詢數量,可以利用這個欄位。

  方案一:

    我們可以寫成 

SELECT * FROM TA_新聞  WHERE ROWNUM <= 3 ORDER BY 發布時間 DESC

 

  來控制顯示三條記錄。

  但是,我們注意到這個ROWNUM是在插入資料時產生的,也就是說如果我們新插入一條發布時間比第3條還早的新聞,他也會出現在最後一個,這樣ROWNUM<3就檢索不到新加的資料。

這樣我們就需要利用子查詢來解決這個問題了。

  方案二:

    我們把它寫成

  SELECT * FROM        ( SELECT * FROM TA_新聞  ORDER BY 發布時間 DESC)       WHERE ROWNUM <= 3       ORDER BY ROWNUM ASC;

    這樣我們查詢的實際上是一張暫存資料表(括弧內的結果返回成一張新的表),這張表的ROWNUM就是按照"發布時間"的逆序來排序的,我們再在外層進行ROWNUM的篩選就可以得到想要的結果了。

 

  以上介紹了SQL的原理,那麼怎麼將它用在asp.net裡呢?

  試過的朋友會發現這裡的子查詢在資料集裡運行是不通過的,那麼我們就需要編輯預存程序來解決這個問題。

  

create or replace procedure 顯示新聞列表(p_顯示條數 int, P_RESULT OUT SYS_REFCURSOR)asbegin OPEN P_RESULT FOR   SELECT * FROM        ( SELECT * FROM TA_新聞  ORDER BY 發布時間 DESC)       WHERE ROWNUM <= p_顯示條數       ORDER BY ROWNUM ASC;end 顯示新聞列表;

以上預存程序僅僅傳遞了一個參數就是現實條數,這樣使用者只用輸入顯示條數就可以反饋出相應條數的新聞,並且是時間逆序排列的,這樣使用者看到的始終是最新的幾條新聞。

這裡的第二個參數

P_RESULT 是一個OUT型的參數,返回的是一個遊標。(遊標的意思其實就是一張表,將結果作為一張表存在遊標中並作為傳回值)。
編寫好這個預存程序中,再將它拖入資料集中,就可以當表格一樣用ObjectDataSource綁定這個方法了。這樣再利用repeater綁定ObjectDataSource就可以控制顯示條數了。

解決asp.net中repeater控制項的顯示數量控制

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.