如何利用GridView縱向顯示資料?

來源:互聯網
上載者:User

有的時候想實作類別似,第二個圖示的效果:

我們可能首先會想到DataList,其實DataList我們這裡設定:

<asp:DataList id="DataList1" runat="server" RepeatColumns="10">
                <ItemTemplate>
                    <%# DataBinder.Eval(Container.DataItem,"test") %>
                </ItemTemplate>
        </asp:DataList>

這樣顯示出來的是的效果,並不能得到預期的縱向顯示一定行的效果。
其實遇到這樣的情況可以對資料來源做一下轉換。
比如我們建立這樣的測試資料來源:

 

DataTable dt=new DataTable();
             DataColumn dc=new DataColumn("test",Type.GetType("System.String"));
             dt.Columns.Add(dc);
            for(int i=1;i<=54;i++)
            {
                 DataRow dr=dt.NewRow();
                 dr["test"]="測試"+i;
                 dt.Rows.Add(dr);
             }

資料表中有54行資料,我們希望它一列顯示8行,也就是分7列顯示,達到的效果,寫一個方法進行轉換。

private DataTable MakeData(DataTable dt,int iSize,int iColumnID)
        {
            int itmp=dt.Rows.Count%iSize;
            int iColumn;
            if(itmp==0)
                 iColumn=dt.Rows.Count/iSize;
            else
                 iColumn=dt.Rows.Count/iSize+1;
             DataTable newdt=new DataTable();
            for(int i=0;i<iColumn;i++)
            {
                 DataColumn dc=new DataColumn(dt.Columns[iColumnID].ColumnName+i,dt.Columns[iColumnID].DataType);
                 newdt.Columns.Add(dc);
             }
            for(int i=0;i<iSize;i++)
            {        
                 DataRow dr=newdt.NewRow();
                for(int j=0;j<iColumn;j++)
                {
                    if((i+j*iSize)<dt.Rows.Count)dr[dt.Columns[iColumnID].ColumnName+j]=dt.Rows[i+j*iSize][iColumnID];
                 }
                 newdt.Rows.Add(dr);                
             }
            return newdt;
         }

然後綁定即可:

this.DataGrid1.DataSource=MakeData(dt,8,0);
            this.DataGrid1.DataBind();

在這裡僅僅說明一下這個方法三個參數的含義:
第一個參數傳遞一個原來的資料表進去
第二個參數表示希望這一列顯示多少行
第三個參數表示這個欄位是資料表的第幾列的欄位,這裡的資料表只有1列,所以寫0

其實這麼做的好處在於DataGrid能夠方便的進行分頁,這個排列次序接近於DataList的RepeatDirection="Vertical"效果
今天再來對上次的程式進行一下修改,實現RepeatDirection="Horizontal"的效果,同時啟用DataGrid的分頁。
這樣可以彌補DataList不能自動分頁的不足,但是效率上來說其實是很差的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.