示例#1
0
        private DataTable ConvertToDataTable(LinqServerModeSource data)
        {
            //GridView view = new GridView();
            //view.DataSource = data;
            GridView gv = new GridView();
            GridControl gc = new GridControl();
            gc.MainView = gv;
            gc.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gv });

            gc.DataSource = data;
            gc.RefreshDataSource();

            DataTable dt = new DataTable();

            // add the columns to the datatable
            GridView view = gc.FocusedView as GridView;

            for (int i = 0; i < view.Columns.Count; i++)
            {
                dt.Columns.Add(view.Columns[i].FieldName);
            }
            dt.Columns["Company_Last_Contact"].DataType = typeof(DateTime);
            dt.Columns["Company_Last_Contact"].AllowDBNull = true;

            for (int i = 0; i < view.DataRowCount; i++)
            {
                DataRow dr;
                dr = dt.NewRow();
                for (int x = 0; x < view.Columns.Count; x++)
                {
                    if (view.Columns[x].FieldName == "Company_Last_Contact")
                    {
                        try
                        {
                            if (view.GetRowCellValue(i, dt.Columns[x].ColumnName) != null)
                            {
                                dr[x] = Convert.ToDateTime(view.GetRowCellValue(i, dt.Columns[x].ColumnName));
                            }
                            else
                            {
                                dr[x] = DBNull.Value;
                            }
                        }
                        catch (Exception e)
                        {
                            m_EventBus.Notify(new FrmSalesConsultantEvents.Tracer() {
                                ErrorMessage = e.Message
                            });
                            dr[x] = DBNull.Value;
                        }
                    }
                    else
                    {
                        dr[x] = view.GetRowCellValue(i, dt.Columns[x].ColumnName);
                    }
                }
                dt.Rows.Add(dr);

            }
            gc.Dispose();
            gc = null;

            return dt;
        }