您的位置:首页 > 其它

动态创建gridview,导出Excel数据

2017-07-04 14:34 351 查看
先创建一个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())

      
4000
                  {

                            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;

                    }

                }

            }        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: