(論壇答疑點滴)如果用DataGrid實作類別似DataList多列的效果

來源:互聯網
上載者:User
datagrid  上一次說了怎麼利用DataGrid縱向顯示
http://www.cnblogs.com/lovecherry/archive/2005/04/23/143819.html
其實這麼做的好處在於DataGrid能夠方便的進行分頁,這個排列次序接近於DataList的RepeatDirection="Vertical"效果
今天再來對上次的程式進行一下修改,實現RepeatDirection="Horizontal"的效果,同時啟用DataGrid的分頁。
這樣可以彌補DataList不能自動分頁的不足,但是效率上來說其實是很差的。

 
<asp:DataGrid id="DataGrid1" runat="server" AllowPaging="True" PageSize="4"></asp:DataGrid>
private DataTable MakeData(DataTable dt,int iSize,int iColumnID) 
        { 
            int itmp=dt.Rows.Count%iSize; 
            int iRow; 
            if(itmp==0) 
                iRow=dt.Rows.Count/iSize; 
            else 
                iRow=dt.Rows.Count/iSize+1; 
            DataTable newdt=new DataTable(); 
            for(int i=0;i<iSize;i++) 
            { 
                DataColumn dc=new DataColumn(dt.Columns[iColumnID].ColumnName+i,dt.Columns[iColumnID].DataType); 
                newdt.Columns.Add(dc); 
            } 
            for(int i=0;i<iRow;i++) 
            {         
                DataRow dr=newdt.NewRow(); 
                for(int j=0;j<iSize;j++) 
                { 
                    if((j+i*iSize)<dt.Rows.Count)dr[dt.Columns[iColumnID].ColumnName+j]=dt.Rows[j+i*iSize][iColumnID]; 
                } 
                newdt.Rows.Add(dr);                 
            } 
            return newdt; 
        } 
private void Page_Load(object sender, System.EventArgs e)
        {
            // 在此處放置使用者代碼以初始化頁面
            if(!IsPostBack)
            {
                SetBind();
            }
        }

        private void SetBind()
        {
            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); 
            } 
            this.DataGrid1.DataSource=MakeData(dt,4,0); 
            this.DataGrid1.DataBind();
        }

    private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
        {
            this.DataGrid1.CurrentPageIndex=e.NewPageIndex;
            SetBind();
        }

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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