zoukankan      html  css  js  c++  java
  • (论坛答疑点滴)如何用DataGrid实现类似DataList多列的效果

    上一次说了怎么利用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>

    这里的Pagesize是代表行数,下面那个方法的iSize参数代表列数

    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();
            }
    欢迎大家阅读我的极客时间专栏《Java业务开发常见错误100例》【全面避坑+最佳实践=健壮代码】
  • 相关阅读:
    在 Mac 上使用 PICT 进行 Pairwise 测试
    组合测试术语:Pairwise/All-Pairs、OATS(Orthogonal Array Testing Strategy)
    小白懂算法之二分查找
    小白也能看懂的JVM内存区域
    小白也能看懂的JDK1.8前_HashMap的扩容机制原理
    小白也能看懂的ArrayList的扩容机制
    activenq整合spring之队列消费者
    activemq整合spring之队列生产者
    ActiveMQ之Broker
    ActiveMQ_JMS签收
  • 原文地址:https://www.cnblogs.com/lovecherry/p/146749.html
Copyright © 2011-2022 走看看