html5中文学习网

您的位置: 首页 > 网络编程 > ASP.NET » 正文

(论坛答疑点滴)如果用DataGrid实现类似DataList多列的效果_.NET教程_编程技术

[ ] 已经帮助:人解决问题
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();
        }
SCxHTML5中文学习网 - HTML5先行者学习网
SCxHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助