天天看點

關于DataTable分頁方案的實作

在實際開發中,常常會遇到很多資訊,由于字段比較多,常常用GridView或RadGrid等一些資料顯示控件直接一行顯示,效果極差(需要拖動滾動條,比較麻煩)。

是以自然想到定制模闆用table來實作:

還是先上代碼,然後再分析吧。

<asp:FormView ID="fvBaseInfo" runat="server" Width="100%" AllowPaging="true"

                        onpageindexchanging="fvBaseInfo_PageIndexChanging">

                    <ItemTemplate>

                        <table width="100%" class="Mtable">

                            <tr>

                                <td colspan="8" align="center"><font color="red" size="4">未繳費機關基本資訊表</font></td>

                            </tr>

                                <td align="right">審批機關:</td>

                                <td align="center">

                                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("SPJG1") %>' ForeColor="ButtonShadow"></asp:Label>

                                </td>

                                <td align="right">監督管理機關:</td>

                                    <asp:Label ID="Label2" runat="server" Text='<%# Eval("JDGLJG1") %>' ForeColor="ButtonShadow"></asp:Label>

                                <td align="right">取水權人名稱:</td>

                                    <asp:Label ID="Label3" runat="server" Text='<%# Eval("QSQRMC") %>' ForeColor="ButtonShadow"></asp:Label>

                                <td align="right">法人代表:</td>

                                    <asp:Label ID="Label4" runat="server" Text='<%# Eval("FDDBR") %>' ForeColor="ButtonShadow"></asp:Label>

                                <td align="right">職務:</td>

                                    <asp:Label ID="Label5" runat="server" Text='<%# Eval("ZW") %>' ForeColor="ButtonShadow"></asp:Label>

                                <td align="right">機關類型:</td>

                                    <asp:Label ID="Label6" runat="server" Text='<%# Eval("DWLX") %>' ForeColor="ButtonShadow"></asp:Label>

                                <td align="right">行業類别:</td>

                                    <asp:Label ID="Label7" runat="server" Text='<%# Eval("HYLB") %>' ForeColor="ButtonShadow"></asp:Label>

                                <td align="right">取水申請日期:</td>

                                    <asp:Label ID="Label8" runat="server" Text='<%# this.GetSubString(Eval("SQQSQSRQ").ToString()) %>' ForeColor="ButtonShadow"></asp:Label>

                                <td align="right">許可證有效期:</td>

                                    <asp:Label ID="Label9" runat="server" Text='<%# this.GetSubString(Eval("XKZYXQ").ToString()) %>' ForeColor="ButtonShadow"></asp:Label>

                                <td align="right">通訊位址:</td>

                                    <asp:Label ID="Label10" runat="server" Text='<%# Eval("TXDZ") %>' ForeColor="ButtonShadow"></asp:Label>

                                <td align="right">郵政編碼:</td>

                                    <asp:Label ID="Label11" runat="server" Text='<%# Eval("YZBM") %>' ForeColor="ButtonShadow"></asp:Label>

                                <td align="right">聯系人:</td>

                                    <asp:Label ID="Label12" runat="server" Text='<%# Eval("LXR") %>' ForeColor="ButtonShadow"></asp:Label>

                                <td align="right">工作部門:</td>

                                    <asp:Label ID="Label13" runat="server" Text='<%# Eval("GZBM") %>' ForeColor="ButtonShadow"></asp:Label>

                                <td align="right">職務(職稱):</td>

                                    <asp:Label ID="Label14" runat="server" Text='<%# Eval("ZWZC") %>' ForeColor="ButtonShadow"></asp:Label>

                                <td align="right">聯系電話:</td>

                                    <asp:Label ID="Label15" runat="server" Text='<%# Eval("LXDH1") %>' ForeColor="ButtonShadow"></asp:Label>

                                <td align="right">電子郵箱:</td>

                                    <asp:Label ID="Label16" runat="server" Text='<%# Eval("DZXX1") %>' ForeColor="ButtonShadow"></asp:Label>

                         </table>

                    </ItemTemplate>

                        <EmptyDataTemplate>

                            <table width="100%">

                                <tr>

                                    <td align="center"><font color="red" size="3">無任何資訊</font></td>

                                </tr>

                            </table>

                        </EmptyDataTemplate>

                </asp:FormView>

以上是在FormView裡的模闆列裡放置了一個table,用來顯示較為多的字段資訊,提供浏覽,這時就涉及到如果擷取到的資訊數量特别多的話,分頁該如何實作?

...

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            VSDataTable1 = new DataTable(); //未繳費機關基本資訊

        }

    }

.

protected void btnQuery_Click(object sender, EventArgs e)

{

            string strSQL ="select * from QSXK_DJB1";

            DM_Water dm = new DM_Water();

            DataSet ds = dm.getsql(strSQL);

            this.fvBaseInfo.DataSource = ds;

            this.fvBaseInfo.DataBind();

            ViewState["wjfdwjbxx"] = ds.Tables[0];

}

    //FormView控件分頁

    protected void fvBaseInfo_PageIndexChanging(object sender, FormViewPageEventArgs e)

        //分頁代碼

        this.fvBaseInfo.DataSource = VSDataTable1;

        this.fvBaseInfo.PageIndex = e.NewPageIndex;

        this.fvBaseInfo.DataBind();

    /// <summary>

    /// 存放在ViewState的DataTable  未繳費機關基本資訊表

    /// </summary>

    private DataTable VSDataTable1

        get { return ViewState["wjfdwjbxx"] as DataTable; }

        set { ViewState["wjfdwjbxx"] = value; }

    /// 普通的綁定資料

    private void PageDataBind()

        fvBaseInfo.DataSource = VSDataTable1;

        fvBaseInfo.DataBind();

    /// 綁定資料加換頁

    /// <param name="getPageIndex">新頁面Index</param>

    private void PageDataBind(Int32 getPageIndex)

        fvBaseInfo.PageIndex = getPageIndex;

這裡比較重要的就是利用ViewState來儲存資料源資訊,以供分頁來使用,效果圖如下位址所示:

<a href="http://hi.csdn.net/space-95339-do-album-picid-551779.html">http://hi.csdn.net/space-95339-do-album-picid-551779.html</a>

這裡隻是個人對于DataTable分頁的一種實作方案,如有不妥之處,敬請指正,大家一起交流學習。

繼續閱讀