DevExpress 컨트롤 경험 요약

11406 단어 DevExpress
여러 GridControl을 Excel 파일로 내보내기
 
 public static bool ToExcelDev(List lstGridControl)
        {
            SaveFileDialog dig = new SaveFileDialog();
            dig.Filter = ExcelHelper.FILTER_EXCEL;
            if (dig.ShowDialog() == DialogResult.Cancel)
                return false;
            try
            {
                CompositeLink complink = new CompositeLink(new PrintingSystem());
                foreach (GridControl item in lstGridControl)
                {
                    if (item.DataSource != null)
                    {
                        foreach (GridView gridView in item.Views)
                        {
                            gridView.OptionsPrint.AutoWidth = false;
                        }
                        PrintableComponentLink link = new PrintableComponentLink();
                        link.Component = item;
                        complink.Links.Add(link);
                    }
                }
                complink.CreatePageForEachLink();
                complink.ExportToXlsx(dig.FileName, new XlsxExportOptions() { ExportMode = XlsxExportMode.SingleFilePageByPage, TextExportMode = TextExportMode.Text });
                MessageBox.Show(ValidateHelper.GetText("Success", " Excel!"), ValidateHelper.GetText("Alert", " "));
                return true;
            }
            catch (Exception er)
            {
                MessageBox.Show(er.Message, ValidateHelper.GetText("Alert", " "));
                return false;
            }
        }

참고 사용자 컴퓨터에는 Office 2007 이상의 버전이 설치되어 있어야 합니다. 그렇지 않으면 내보낸 파일이 비어 있습니다.
참고: 내보내기 전에 GridView를 사용해야 합니다.OptionsPrintAutoWidth=false;,그렇지 않으면 내보낸 후 데이터가 한데 뒤섞인다.
 advBandedGridView1.OptionsPrint.AutoWidth = false;
다중 문서documentManager1, tabbedView 보기에서 문서 탭 표시 순서 변경
 
            tabbedView1.Controller.Move((currentDoc as DevExpress.XtraBars.Docking2010.Views.Tabbed.Document), 0);

gridView 열에 있는 행의 편집 컨트롤을 비워 둡니다.
 
 
 
  private DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit EmptyEditor;

  private void InitEmptyEditor()
        {
            EmptyEditor = new DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit();
            EmptyEditor.Buttons.Clear();
            EmptyEditor.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
            gridControl1.RepositoryItems.Add(EmptyEditor);
            new DevExpress.XtraGrid.Design.XViewsPrinting(gridControl1);
        }
  private void gridView1_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e)
        {
            if (e.Column.FieldName == SELECTFIELDNAME)
            {
                if (IsMachineRow(e.RowHandle) == false)
                {
                    e.RepositoryItem = EmptyEditor;
                }
}
}

spinEdit 텍스트 상자의 소수점 삭제하기
 
  spinEdit1.Properties.IsFloatValue = false;

gridView1 편집을 해결할 때 커서가 칸을 떠나지 않고 바로 저장된 후 최신 데이터는 데이터베이스에 쓸 수 없습니다.
 
 
 
 
 // 
 gridView1.PostEditor();

패리티 행 스타일gridView1이 활성화되었습니다.OptionsView.EnableAppearanceEvenRow = true;이후, gridView1_RowStyle 이벤트의 e. Appearance.BackColor 속성이 작동하지 않으므로 다음 방법으로 변경할 수 있습니다.
 
 private void ConditionsAdjustment()
        {
            StyleFormatCondition cn;
            cn = new StyleFormatCondition(FormatConditionEnum.GreaterOrEqual, dgvPO.Columns["Status"], null, 1);
            cn.ApplyToRow = true;
            cn.Appearance.BackColor = Color.Gray;
            dgvPO.FormatConditions.Add(cn);

            //  
            cn = new StyleFormatCondition(FormatConditionEnum.Equal, dgvPO.Columns["Status"], null, -1);
            cn.ApplyToRow = true;
            cn.Appearance.Font = new Font(AppearanceObject.DefaultFont, FontStyle.Strikeout);
            cn.Appearance.ForeColor = SystemColors.ControlDark;
            dgvPO.FormatConditions.Add(cn);
            //
        }

 
gridView 드롭 값 스크롤 바 이벤트 및 값
 
 
  void gvFacility_TopRowChanged(object sender, EventArgs e)
        {
            int index= gvFacility.TopRowIndex;
        }

 
사용자 정의 열 머리글 CustomDrawColumnHeader는 CheckBox입니다.
 
 
  private void FrmAllPlan_Load(object sender, EventArgs e)
        {
            var itemIndex = gcResult.RepositoryItems.Add(new RepositoryItemCheckEdit());
            var columnEdit = gcResult.RepositoryItems[itemIndex] as RepositoryItemCheckEdit;
            columnEdit.ValueChecked = true;
            columnEdit.ValueUnchecked = false;
            ColIsSelected.ColumnEdit = columnEdit;
            //dgvResult.CustomDrawColumnHeader+=dgvResult_CustomDrawColumnHeader;
        }


 
 
  private void dgvResult_CustomDrawColumnHeader(object sender, DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e)
        {
            if (e.Column == null)
                return;
            if (e.Column.AbsoluteIndex != 0)
                return;
            Rectangle rect = e.Bounds;
            rect.Inflate(-1, -1);

            e.Info.InnerElements.Clear();
            e.Painter.DrawObject(e.Info);
            DrawCheckBox(e.Graphics, rect, e.Column.ColumnEdit as RepositoryItemCheckEdit, IsAllSelected());
            e.Handled = true;
        }

        void DrawCheckBox(Graphics g,Rectangle r,RepositoryItemCheckEdit checkEdit,bool isCheck)
        {
            DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo info = default(DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo);
            DevExpress.XtraEditors.Drawing.CheckEditPainter painter = default(DevExpress.XtraEditors.Drawing.CheckEditPainter);
            DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs args = default(DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs);
            info = (CheckEditViewInfo)checkEdit.CreateViewInfo();
            painter = (CheckEditPainter)checkEdit.CreatePainter();

            info.EditValue = isCheck;
            info.Bounds = r;
            info.CalcViewInfo(g);
            args = new ControlGraphicsInfoArgs(info, new DevExpress.Utils.Drawing.GraphicsCache(g), r);
            painter.Draw(args);
            args.Cache.Dispose();
        }

        private void dgvResult_MouseUp(object sender, MouseEventArgs e)
        {
            if(e.Button== System.Windows.Forms.MouseButtons.Left && e.Clicks==1)
            {
                GridView gridview = sender as GridView;
                if(gridview!=null)
                {
                    GridHitInfo hitinfo = gridview.CalcHitInfo(e.Location);
                    if(hitinfo.InRow==false && hitinfo.InColumn==true)
                    {
                        SetAllCheckBox(!IsAllSelected());
                        //if (AffectCheckBoxChange != null)
                        //    AffectCheckBoxChange(this, null);
                    }
                }
                this.dgvResult.RefreshData();
                DXMouseEventArgs args = DXMouseEventArgs.GetMouseArgs(e);
                args.Handled = true;
            }
        }

        private void SetAllCheckBox(bool p)
        {
            Model.BindCollection lstRe = gcResult.DataSource as Model.BindCollection;
            if (lstRe != null)
            {
                foreach (ReportData model in lstRe)
                {
                    model.IsSelected = p;
                }
            }
            gcResult.RefreshDataSource();
        }

        private bool IsAllSelected()
        {
            bool result = true;
            Model.BindCollection lstRe = gcResult.DataSource as Model.BindCollection;
            if (lstRe != null)
            {
                foreach (ReportData model in lstRe)
                {
                    if (model.IsSelected == false)
                    {
                        result = false;
                        break;
                    }
                }
            }
            else
            {
                result = false;
            }
            return result;
        }

 
조건에 따라 셀 병합
 
 
   private void gvSupplierReplyOfShortage_CellMerge(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e)
        {
            
            SupplierReplyOfShortageInfo model1 = gvSupplierReplyOfShortage.GetRow(e.RowHandle1) as SupplierReplyOfShortageInfo;
            SupplierReplyOfShortageInfo model2 = gvSupplierReplyOfShortage.GetRow(e.RowHandle2) as SupplierReplyOfShortageInfo;

            if (e.Column.FieldName == colTotalShortageMatOfPlanHasBroughtAmount.FieldName || e.Column.FieldName == colUnit.FieldName)
            {
                if (model1.MatName==model2.MatName)
                {
                    e.Merge = true;
                }
                else
                {
                    e.Merge = false;
                }
                e.Handled = true;// true, 。
            }
        }

 
지정한 줄에 위치 지정(정렬 후에도 정확하게 위치 지정)
 
주의: 열의 값은 유일하게 한 줄을 확정할 수 있어야 한다
 
 gvPO.FocusedRowHandle = gvPO.LocateByValue(0, colWOCode, model.Code);

 
GridView에 정수를 입력하여% 형식으로 표시하고 데이터베이스에 저장된 값은 실제 값입니다.
 
 
 this.colEfficiency.DisplayFormat.FormatString = "{0:n}%";
 this.colEfficiency.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;

참고: 실제 값은 표시할 때 *100, 데이터베이스에 저장하기 전에/100
 
TextEdit에% 형식으로 정수 입력
 
 this.textEdit1.Properties.Mask.EditMask = "p";
 this.textEdit1.Properties.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Numeric;
 this.textEdit1.Properties.Mask.UseMaskAsDisplayFormat = true;

'선택'열을 편집할 때, 마우스를 누르면 바로 선택하거나 선택 취소합니다
  // “ ” , 
  gridView1.OptionsBehavior.EditorShowMode = EditorShowMode.MouseDown;

표 필터링된 데이터 행
  private void allSelectedToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IList list= gridView1.DataController.GetAllFilteredAndSortedRows();
            foreach(var item in list)
            {
                DataRowView dataView = (item as DataRowView);
                dataView.Row[colIsSelected.FieldName] = true;
            }
            gridView1.RefreshData();
        }

GridView 모두 확장 또는 숙박
  /// 
        ///  
        /// 
        /// 
        public static void ExpandAllRows(this GridView view)
        {
            view.BeginUpdate();
            try
            {
                int dataRowCount = view.DataRowCount;
                for (int rHandle = 0; rHandle < dataRowCount; rHandle++)
                    view.SetMasterRowExpanded(rHandle, true);
            }
            finally
            {
                view.EndUpdate();
            }
        }
 gvCapacityAllocation.CollapseAllDetails();

 
 
 
 
 
 
 
 

좋은 웹페이지 즐겨찾기