国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

DataList控件也玩分頁 (轉自aspcn.com)

2024-05-04 11:06:34
字體:
來源:轉載
供稿:網友
  • 本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。
  • 眾所周知,asp.net中給我們提供了三個數據控件--datagrid,repeater,datalist。在這三個控件中,datagrid控件的功能最強大,repeater控件最忠實于模版原樣,datalist控件則兼而有之。

    datagrid控件太有名了,所以以前用的講的也很多,repeater功能太少,沒有什么好講的。這里主要是講一講datalist控件。

    datalist控件其實功能也很強大,他支持選擇、編輯,實現的方法也很簡單,不過最令人頭疼的就是它不像datagrid控件一樣內置了分頁的功能,這么好的一個控件竟然不能分頁!!!

    確實是一個很讓人頭疼的事情。

    不過,只是datalist沒有提供內置的分頁功能,但是并不表示,我們不能使用datalist控件來實現分頁,既然它不給我分頁功能,那只好自己動手了。

    下面是全部原代碼,其實用到的方法和php中的分頁差不多,只是這里用的是dataadapter與dataset組合,而不是php中的sql語句直接搞定。

    (本程序在.net framework beta 2下測試通過)


    <% @ page language="c#" %>
    <% @ import namespace="system.data" %>
    <% @ import namespace="system.data.oledb" %>
    <script language="c#" runat="server">
    /*
        create by 飛刀
        http://www.aspcn.com
        2001-7-25 01:44

        support .net framework beta 2
    */
    oledbconnection myconn;
    int pagesize,recordcount,pagecount,currentpage;
    public void page_load(object src,eventargs e)
    {
        //設定pagesize
        pagesize = 10;
        
        //連接語句
        string myconnstring = "provider=microsoft.jet.oledb.4.0; data source="+server.mappath(".")+"..//database//db1.mdb;";
        myconn = new oledbconnection(myconnstring);
        myconn.open();

        //第一次請求執行
        if(!page.ispostback)
        {
            listbind();
            currentpage = 0;
            viewstate["pageindex"] = 0;

            //計算總共有多少記錄
            recordcount = calculaterecord();
            lblrecordcount.text = recordcount.tostring();

            //計算總共有多少頁
            pagecount = recordcount/pagesize;
            lblpagecount.text = pagecount.tostring();
            viewstate["pagecount"] = pagecount;
        }
    }
    //計算總共有多少條記錄
    public int calculaterecord()
    {
        int intcount;
        string strcount = "select count(*) as co from score";
        oledbcommand mycomm = new oledbcommand(strcount,myconn);
        oledbdatareader dr = mycomm.executereader();
        if(dr.read())
        {
            intcount = int32.parse(dr["co"].tostring());
        }
        else
        {
            intcount = 0;
        }
        dr.close();
        return intcount;
    }

    icollection createsource()
    {
        
        int startindex;
        
        //設定導入的起終地址
        startindex    = currentpage*pagesize;
        string strsel = "select * from score";
        dataset ds = new dataset();

        oledbdataadapter myadapter = new oledbdataadapter(strsel,myconn);
        myadapter.fill(ds,startindex,pagesize,"score");
        
        return ds.tables["score"].defaultview;
    }
    public void listbind()
    {
        score.datasource = createsource();
        score.databind();
        
        lbnnextpage.enabled = true;
        lbnprevpage.enabled = true;
        if(currentpage==(pagecount-1)) lbnnextpage.enabled = false;
        if(currentpage==0) lbnprevpage.enabled = false;
        lblcurrentpage.text = (currentpage+1).tostring();

    }

    public void page_onclick(object sender,commandeventargs e)
    {
        currentpage = (int)viewstate["pageindex"];
        pagecount    = (int)viewstate["pagecount"];

        string cmd = e.commandname;
        //判斷cmd,以判定翻頁方向
        switch(cmd)
        {
            case "next":
                if(currentpage<(pagecount-1)) currentpage++;
                break;
            case "prev":
                if(currentpage>0) currentpage--;
                break;
        }

        viewstate["pageindex"] = currentpage;

        listbind();
        
    }
    </script>
    <html>
    <head>
    <title></title>
    </head>
    <body>
    <form runat="server">
    共有<asp:label id="lblrecordcount" forecolor="red" runat="server" />條記錄     
    當前為<asp:label id="lblcurrentpage" forecolor="red" runat="server" />/<asp:label id="lblpagecount" forecolor="red" runat="server" />頁 

    <asp:datalist id="score" runat="server"
    headerstyle-backcolor="#aaaadd"
    alternatingitemstyle-backcolor="gainsboro"
    edititemstyle-backcolor="yellow"
    >
        <itemtemplate>
            姓名:<%# databinder.eval(container.dataitem,"name") %>
            <asp:linkbutton id="btnselect" text="編輯" commandname="edit" runat="server" />
        </itemtemplate>
    </asp:datalist>
    <asp:linkbutton id="lbnprevpage" text="上一頁" commandname="prev" oncommand="page_onclick" runat="server" />
    <asp:linkbutton id="lbnnextpage" text="下一頁" commandname="next" oncommand="page_onclick" runat="server" />

    </form>
    </body>
    </html>


     


    運行結果如上圖:)

    大家在寫程序時,最重要的是自己去動腦去想,決對不是一出現問題去哪去問。問題太簡單了,還沒有人愿意回答。

    多多思考,多多查資料,才是真正有收獲的。

    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 太仆寺旗| 冀州市| 阳山县| 漳平市| 霍州市| 渭南市| 邓州市| 高雄县| 上蔡县| 子长县| 南通市| 固原市| 岢岚县| 金溪县| 广州市| 马尔康县| 忻城县| 浦县| 安徽省| 吉林省| 故城县| 于都县| 理塘县| 南皮县| 禹城市| 丹寨县| 璧山县| 天峨县| 江陵县| 阿鲁科尔沁旗| 当涂县| 武穴市| 松阳县| 满洲里市| 安徽省| 霍林郭勒市| 阿荣旗| 高平市| 漳平市| 吉林省| 宁海县|