dev常見操作from宋

DEV控件在工具箱中消失處理方法

開始-->程序-->Developer Express v2009 vol 3(依據版本不同)-->Components-->Tools-->ToolboxCreator

 

1、點擊一行選擇完整一行

Run Designer->View->OptionsBehavior->EditorShowMode 設置爲:Click

Run Designer->View->OptionsSelection.EnableAppearanceFocusedCell = false;

2、設置行不可編輯

Run Designer->View->OptionsBehavior->Editable 設置爲:false

但這樣也無法拷貝數據了,最好是上面Editable保持true,設置:

Run Designer->View->OptionsBehavior->ReadOnly 設置爲:true

3、如何禁用GridControl中單擊列彈出右鍵菜單

Run Design->OptionsMenu->EnableColumnMenu 設置爲:false

Run Design->OptionsMenu->EnableFooterMenu 設置爲:false

4、隱藏GridControlGroupPanel表頭

Run Design->OptionsView->ShowGroupPanel 設置爲:false

取消壓縮表格在窗體內完整顯示(不出現橫向滾動條)

Run Design->OptionsView->OptionsView.ColumnAutoWidth = false;

5、如何禁用GridControl中列頭的過濾器

Run Design->OptionsCustomization->AllowFilter 設置爲:false

OptionsView->ShowAutoFilterRow:true 顯示頂端過濾行

6、如何在行頭部顯示行號?

this.gridView1.IndicatorWidth = 40; 

private void gridView1_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e)

{

     if (e.Info.IsRowIndicator && e.RowHandle>=0)

          e.Info.DisplayText = (e.RowHandle + 1).ToString();
}

7、得到當前選定記錄某字段的值

sValue= gridView1.GetDataRow(gridView1.FocusedRowHandle)[FieldName].ToString();

8、不顯示MasterDetailView

gridView1.OptionsDetail.EnableMasterViewMode=false;

9、設某一列文字和標題居中顯示

gridView1.Columns[0].AppearanceHeader.TextOptions.HAlignment =DevExpress.Utils.HorzAlignment.Center;

gridView1.Columns[0].AppearanceCell.TextOptions.HAlignment =DevExpress.Utils.HorzAlignment.Center;

10、去掉某一列上面的自動篩選功能(Filter)

gridView1.Columns[0].OptionsFilter.AllowAutoFilter = false;

gridView1.Columns[0].OptionsFilter.AllowFilter =false;

gridView1.Columns[0].OptionsFilter.ImmediateUpdateAutoFilter =false;

11、設置凍結列(左凍結)

gridView1.Columns[0].Fixed= DevExpress.XtraGrid.Columns.FixedStyle.Left;

12、得到/設置單元格數據

string ss=gridView1.GetRowCellDisplayText(0,gridView1.Columns[0]);

string ss = gridView1.GetRowCellValue(0, gridView1.Columns[0]);

13、設置列寬自動適應文字長短

gridView1.BestFitColumns();

gridView1.BestFitMaxRowCount = 500; //對行數過多時,避免調整時間過長,根據前多少行來判斷每列最佳寬度

14、設置gridview控件的字體

designer-views-外觀-appearance-row-font中設置

15、隱藏行頭列

gdv_point.OptionsView.ShowIndicator = false; //取消行頭列

16、更改某一行的顏色,添加事件

private void gdv_point_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)

{          

     DataRow dr = gdv_point.GetDataRow(e.RowHandle);

     if (dr != null && e.RowHandle==2)

           e.Appearance.ForeColor = Color.Red; //因爲前面已設置了奇偶行背景色,所以這裏如果再設置某行背景色無效              

}

17、更改某一單元格顏色,添加事件

private void gdv_point_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)

{

    if (e.RowHandle == 4 && e.Column.AbsoluteIndex == 4) //e.Column.FieldName == "FIR";

       e.Appearance.ForeColor = Color.Green;

}

18、獲取或設置某一單元格文字

DataRow dr = gdv_point.GetDataRow(gdv_point.FocusedRowHandle); //與DataTable的一樣

dr[3] = "456";

 

19、設置奇偶行顏色後就不能再更改某行的背景色,解決方法,不設奇偶色,在RowStyle事件中繪製,同時設置某行顏色

private void gdv_point_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)

        {

            if (e.RowHandle < 0) return; //還未加載數據           

            if (e.RowHandle % 2 == 0)

                e.Appearance.BackColor = Color.FromArgb(255, 255, 240); // 設置偶數行顏色

            else

                e.Appearance.BackColor = Color.FromArgb(255, 255, 255);  // 設置奇數行顏色默認也是白色 可以省略            

           

            if (gdv_point.GetDataRow(e.RowHandle)["當前狀態"].ToString().Trim() != "")

                e.Appearance.BackColor = Color.FromArgb(255, 0, 0);           

         

        }

 

20、設置某行爲頂端第一顯示行,即視圖滾動到指定行:TopRowIndex(沒有下面的方法好)

int oldtop = parentFrm.gdv_point.TopRowIndex;//獲取原來的最頂行

int oldfocusrow = parentFrm.gdv_point.FocusedRowHandle;

parentFrm.butquery_Click(null,null);//重新執行查詢

parentFrm.gdv_point.TopRowIndex = oldtop;//將最頂行設回原來值,如果原來值超出總行數也不會報錯,會將最頂行設爲最大可能值。

parentFrm.gdv_point.FocusedRowHandle = oldfocusrow; //超出最大行數也不會報錯

 

21、根據某cell的值使界面定位並高亮選擇該行。LocateByDisplayText

gdv_point.FocusedRowHandle = gdv_point.LocateByDisplayText(0, gdv_point.Columns["ID"], pid);

 

22、時間類型默認在gridview中只能顯示年月日,如果要顯示時分秒,需要在RowCellStyle事件中添加

if (e.Column.ColumnType.ToString() == "System.DateTime")

{

      e.Column.DisplayFormat.FormatString = "yyyy-MM-dd HH:mm:ss"; //MM和HH一定要大寫

     e.Column.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime; //這句必須要

 

      //e.Column.DisplayFormat.FormatString = "{0:N2}"; //數字格式化

      //e.Column.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric;

}

23、整個gridview設爲可編輯後,使符合某些條件的行或列不可編輯

private void gdv_pdfpnt_ShowingEditor(object sender, CancelEventArgs e)

{

     if (gdv_pdfpnt.FocusedColumn.AbsoluteIndex == 1)

        e.Cancel = true;

}

24、顯示自動過濾行

OptionView:ShowAutoFilterRow              顯示自動過濾行

25、讓輸入值自動大寫

RepositoryItemTextEdit editor = (RepositoryItemTextEdit)gdc_pdfpnt.RepositoryItems.Add("TextEdit");

editor.CharacterCasing = CharacterCasing.Upper;

gdv_pdfpnt.Columns[3].ColumnEdit = editor;

26更換綁定的DataTable

gdv_pnt.Columns.Clear();

gdc_pnt.DataSource = dt;           

gdv_pnt.RefreshData();

27、多行模式獲取所有選擇行

List<int> selrows = gdv_apoint.GetSelectedRows().ToList(); //多行選擇

 

28 GridControl控件中顯示自定義控件的方法//2016.4.16

添加MouseDown事件,與RowCellClick事件的區別在於RowCellClick只能處理可編輯Cell

 

private void gdv_pdfpnt_MouseDown(object sender, MouseEventArgs e)

        {

DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hinfo = gridView1.CalcHitInfo(new Point(e.X, e.Y));

            if (hinfo.InRowCell && e.Button == MouseButtons.Left && e.Clicks == 1)

            {

              

                gridView1.FocusedRowHandle = hinfo.RowHandle;

 

                DevExpress.XtraGrid.Views.Grid.GridView view = sender as DevExpress.XtraGrid.Views.Grid.GridView;

                DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo viewinfo = view.GetViewInfo() as DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo;

 

                DevExpress.XtraGrid.Views.Grid.ViewInfo.GridCellInfo df = viewinfo.GetGridCellInfo(hinfo);

               

                Rectangle rct = df.Bounds;

                simpleButton1.Bounds = new Rectangle(rct.Left + gridControl1.Left, rct.Top + gridControl1.Top, rct.Width, rct.Height);

 

               

            }

 

            //獲取點擊cell的位置並顯示控件

            GridView view = sender as GridView;

            GridViewInfo viewInfo = view.GetViewInfo() as GridViewInfo;

            GridHitInfo hitInfo = view.CalcHitInfo(e.Location);

            if (hitInfo.InRowCell && hitInfo.Column.AbsoluteIndex == gdv_pdfpnt.Columns.Count - 1 && e.Button == MouseButtons.Left && e.Clicks == 1) //限制鼠標事件爲左鍵單擊

            {

                gdv_pdfpnt.FocusedRowHandle = hitInfo.RowHandle; //關鍵!觸發此事件時,dev控件還沒來得及將當前行切換到點擊行,這裏做強制切換,否則會出現混亂。

                               

                GridCellInfo cellInfo = viewInfo.GetGridCellInfo(hitInfo);

                Rectangle rect = cellInfo.Bounds;

 

                int left = gdc_pdfpnt.Left+rect.Left; //rect 只是客戶區座標,要轉化爲屏幕絕對座標

                int top = gdc_pdfpnt.Top+rect.Top+3;

 

                uC_TypeSelector.Left = left;

                uC_TypeSelector.Top = top;

                uC_TypeSelector.Visible = true;

 

                string val=gdv_pdfpnt.GetDataRow(hitInfo.RowHandle)[hitInfo.Column.AbsoluteIndex].ToString();

                if (val != "") //設置彈出控件初始值

                    uC_TypeSelector.RefFormValue(val); //將cell值初始化類型選擇框,每次改變uc控件值的同時,也會觸發控件回調函數往該界面上寫回值,所以這裏其實還執行了一次界面賦值

                else

                    uC_TypeSelector.RefFormValue("   ");

            }

            else

                uC_TypeSelector.Visible = false;

        }

 

29、自動添加行號的方法:

1、開啓顯示標記列 gdv_point.OptionsView.ShowIndicator = true;默認就是開的

2、設置標記列列寬

 

3、添加事件

private void gdv_pro_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)

        {

            //e.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;

            if (e.Info.IsRowIndicator)

            {

                if (e.RowHandle >= 0)

                {

                    e.Info.DisplayText = (e.RowHandle + 1).ToString();

                }

            }

        }

 

30、添加雙擊事件添加gdv_pro_MouseDown事件

可以將gdv_point.OptionsBehavior.Editable = false;也可不設置

DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hInfo = gdv_pro.CalcHitInfo(new Point(e.X, e.Y));

if (hInfo.InRow && e.Button == MouseButtons.Left && e.Clicks == 2)

 

31、根據界面寬度自動設置列寬模式

在界面或某控件的SizeChang事件中執行此函數

public static void BestFitGridViewColumnsWith( DevExpress.XtraGrid.Views.Grid.GridView gdv )

        {

            //先設置最小列寬

            gdv.BestFitColumns();

 

            //獲取所有列總最小寬度

            int tt = 0;

            for (int i = 0; i < gdv.Columns.Count; i++)

                tt += gdv.CalcColumnBestWidth(gdv.Columns[i]);

 

            //如果有指示列,加上其寬度

            if (gdv.OptionsView.ShowIndicator)

                tt += gdv.IndicatorWidth;

           

            //根據寬度調整列顯示模式

            if (tt < gdv.ViewRect.Width)

                gdv.OptionsView.ColumnAutoWidth = true;

            else

                gdv.OptionsView.ColumnAutoWidth = false;

        }

32、設置單元格中實現換行

首先,查詢語句中用CHR(10)分行符連接顯示內容,如:zx_org||CHR(10)||zx_cut 走向

綁定數據後用

DevExpress.XtraEditors.Repository.RepositoryItemMemoEdit x = new DevExpress.XtraEditors.Repository.RepositoryItemMemoEdit();

gdv_zxnotmatch.Columns["走向"].ColumnEdit = x;

gdv_zxnotmatch.OptionsView.RowAutoHeight = true;

可實現分行顯示

 

 

設置主表、從表嵌套顯示,主錶行前出現+號,點擊顯示滿足關聯關係的從表數據

1、在主view新添加一級level主,從視圖分別爲gridView1和gridView2

2、新建Dataset將主視圖、從視圖對應的兩張datatable添加進去,並設置這兩張表的公共字段建立關聯,即主鍵和外鍵

3、將此Dataset的具有主鍵的Table賦給gridConcrol的DataSource即可

DataSet ds = new DataSet();

var t1 = DBFactorySingleton.GetInstance().Factory.GetDataTable(string.Format(@"select txt_name 名稱, code_id 識別,significant_point_id ID from {0}.vor", AisLogical.dbuser)).Copy(); //加copy的原因是原datatable已經屬於一個dataset

t1.TableName = "t1"; //如果不對table命名,兩次添加的table都會叫默認的表名data,第二張表就添加不進此dataset

ds.Tables.Add(t1); //主表顯示內容

 

var t2 = DBFactorySingleton.GetInstance().Factory.GetDataTable(string.Format(@"select significant_point_id ID, geo_lat 緯度,geo_long 經度,val_freq||uom_freq 頻率,val_mag_var 磁差  from {0}.vor", AisLogical.dbuser)).Copy();

t2.TableName = "t2";

ds.Tables.Add(t2);//子表顯示內容

 

////將子表與主表的公共字段作爲主鍵和外鍵,目的爲了建立關係,由主錶帶出子表

DataColumn keyColumn = ds.Tables["t1"].Columns["id"];

DataColumn foreignKeyColoumn = ds.Tables["t2"].Columns["id"];

//建立關係, 此關係名稱NAIP會默認顯示在子表表頭,可通過設置主表的OptionsDetail.ShowDetailTabs = false;來隱藏名稱

ds.Relations.Add("NAIP", keyColumn, foreignKeyColoumn);

 

gridControl1.DataSource = ds.Tables["t1"]; //將具有主鍵的datatable賦給整個控件的DataSource完成主、從表綁定

 

////////////////////////////////////////////////

//完全用代碼實現Grid控件設置

#region DevGridControl控件設置

            ///////////////////////////////////////////////////////////////////////

            //1添加行號

            //gdv_point.IndicatorWidth = 50; //最好不要顯示此列

            //添加事件顯示行號

            //private void gdv_point_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e)

            //{

            //        if (e.Info.IsRowIndicator && e.RowHandle>=0)

            //            e.Info.DisplayText = (e.RowHandle + 1).ToString();

            //        e.Info.ImageIndex = -1; //不顯示小三角

            //}

 

            //2外觀設置可設置自帶的4種風格,可再做調整

            gdc_point.LookAndFeel.UseDefaultLookAndFeel = false;

            gdc_point.LookAndFeel.SkinName = "Caramel";

            //gdc_point.LookAndFeel.SkinName = "Lilian";

            //gdc_point.LookAndFeel.SkinName = "iMaginary";           

            //gdc_point.LookAndFeel.SkinName = "Money Twins";

            gdv_point.OptionsView.EnableAppearanceOddRow = true;   // 允許設置奇數行

            gdv_point.OptionsView.EnableAppearanceEvenRow = true;   // 允許設置偶數行           

            gdv_point.Appearance.OddRow.BackColor = Color.FromArgb(255, 255, 255);  // 設置奇數行顏色默認也是白色 可以省略            

            gdv_point.Appearance.EvenRow.BackColor = Color.FromArgb(255, 255, 240); // 設置偶數行顏色

            gdv_point.Appearance.Row.Font = new System.Drawing.Font("微軟雅黑", 10.5f); //表內字體

            gdv_point.Appearance.HeaderPanel.Font = new System.Drawing.Font("仿宋", 13f, FontStyle.Bold);//表頭字體                       

            gdv_point.ColumnPanelRowHeight = 35; //表頭面板高度

            gdv_point.RowHeight = 30; //表格行高

            gdv_point.Appearance.FocusedRow.BackColor = Color.FromArgb(255, 240, 151); //選中行背景色

            gdv_point.Appearance.FocusedRow.ForeColor = Color.Black;  //選中行前景色

            gdv_point.Appearance.HideSelectionRow.BackColor = Color.White; //失去焦點是選中行前景色

            gdv_point.Appearance.HideSelectionRow.ForeColor = Color.Black;//失去焦點是選中行背景色

 

            //3、行選模式

            gdv_point.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.Click; //設置整行選擇           

            gdv_point.OptionsBehavior.ReadOnly = true; //不可編輯

            gdv_point.OptionsSelection.EnableAppearanceFocusedCell = false; //取消選中時單元格高亮      

 

            //4、操作

            gdv_point.OptionsMenu.EnableColumnMenu = false; //禁用列名右鍵彈出菜單

            gdv_point.OptionsMenu.EnableFooterMenu = false;//禁用腳註右鍵彈出菜單

            gdv_point.OptionsView.ShowGroupPanel = false;//禁用拖表頭group面板

            //gdv_point.OptionsCustomization.AllowFilter = false; //禁用列頭篩選

            gdv_point.OptionsView.ColumnAutoWidth = false;//禁用自動列寬,恢復橫向滾動條

 

            //5、列寬優化

            //每次綁定數據後要執行gdv_point.BestFitColumns(); 來優化每列寬度           

            gdv_point.BestFitMaxRowCount = 500; //根據前多少行來判斷每列最佳寬度

            gdv_point.OptionsDetail.ShowDetailTabs = false;//隱藏從表的表頭標籤

            gdv_point.OptionsView.ShowIndicator = false; //取消行頭列

            #endregion

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章