动态创建gridview,导出Excel数据

先创建一个GridControl,在创建一个GridView视图,再传入数据
GridControl CreateGrid(List<marketinformation> pagemodel)
        {
  GridControl grid = new GridControl(); ;
            GridView view = new GridView();
            grid.ViewCollection.Add(view);
            grid.MainView = view;
            view.GridControl = grid;

            foreach (GridColumn column in gridView2.Columns)
            {
                DevExpress.XtraGrid.Columns.GridColumn gridColumnNumber = view.Columns.AddVisible(column.FieldName.ToString());
                gridColumnNumber.Caption = column.Caption.ToString();
                gridColumnNumber.FieldName = column.FieldName.ToString();
            }
            grid.DataSource = pagemodel;
            this.Controls.Add(grid);//重要  
            grid.ForceInitialize();//重要  
            BestColumns(view);
            view.OptionsPrint.AutoWidth = false;
            return grid;        }
然后数据分页创建
IPrintable[] arr(List<marketinformation> data)
        {
           List<IPrintable> Printable=new List<IPrintable>();
            int PageIndex=0;
            int PageSize=50000;
            int CurrentIndex=0;
            int TotalCount=data.Count;
            for(PageIndex=0;CurrentIndex<TotalCount;PageIndex++)
            {
                var PageData = data.Skip(PageIndex*PageSize).Take(PageSize).ToList();
                Printable.Add(CreateGrid(PageData));
                CurrentIndex=(PageIndex+1)*PageSize;
             }
            return Printable.ToArray();        }
最后数据多的时候自动列宽或假死,可以循环固定列宽,也可以写字段名
void BestColumns(GridView view)
        {
         if (chkeds.Checked)
            {
                view.OptionsView.ColumnAutoWidth = false;
                foreach (GridColumn column in view.Columns)
                {
                    if (column.Visible)
                    {
                        switch (column.FieldName.ToString())
                        {
                            case "caccount":
                                view.Columns["caccount"].Width = 150;
                                break;
                            case "cunitname":
                                view.Columns["cunitname"].Width = 300;
                                break;
                            case "ddate":
                                view.Columns["ddate"].Width = 150;
                                break;
                            case "cemskind":
                                view.Columns["cemskind"].Width = 100;
                                break;
                            case "cnum":
                                view.Columns["cnum"].Width = 150;
                                break;
                            case "dsysdate":
                                view.Columns["dsysdate"].Width = 150;
                                break;
                            default:
                                view.Columns[column.FieldName].Width = 100;
                                break;
                        }
                    }
                }
            }
            else
            {
                view.OptionsView.ColumnAutoWidth = true;
                foreach (GridColumn column in view.Columns)
                {
                    if (column.Visible)
                    {
                        view.Columns[column.FieldName].Width = 75;
                    }
                }
            }        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值