1. 程式人生 > >DEVexpress GridControl 屬性設置

DEVexpress GridControl 屬性設置

分數 dst sse 將他 ces contain nav 菜單 query

1、 如何解決單擊記錄整行選中的問題

View->OptionsBehavior->EditorShowMode 設置為:Click

2、 如何新增一條記錄

(1)、gridView.AddNewRow()

(2)、實現 gridView_InitNewRow 事件

3、如何解決 GridControl 記錄能獲取而沒有顯示出來的問題

gridView.populateColumns();

4、如何讓行只能選擇而不能編輯(或編輯某一單元格)

(1)、View->OptionsBehavior->EditorShowMode 設置為:Click

(2)、View->OptionsBehavior->Editable 設置為:false

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

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

6、如何隱藏 GridControl 的 GroupPanel 表頭

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

7、如何禁用 GridControl 中列頭的過濾器 過濾器如下圖所示:

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

8、如何在查詢得到 0 條記錄時顯示自定義的字符提示/顯示 如圖所示:

方法如下:

//When no Records Are Being Displayed

private void gridView1_CustomDrawEmptyForeground(object sender, CustomDrawEventArgs e)

{

//方法一(此方法為GridView設置了數據源綁定時,可用)

ColumnView columnView = sender as ColumnView;

BindingSource bindingSource = this.gridView1.DataSource as BindingSource;

if(bindingSource.Count == 0)

{

string str = "沒有查詢到你所想要的數據!";

Font f = new Font("宋體", 10, FontStyle.Bold);

Rectangle r = new Rectangle(e.Bounds.Top + 5, e.Bounds.Left + 5, e.Bounds.Right - 5, e.Bounds.Height - 5);

e.Graphics.DrawString(str, f, Brushes.Black, r); }

//方法二(此方法為GridView沒有設置數據源綁定時,使用,一般使用此種方 法)

if (this._flag)

{ if (this.gridView1.RowCount == 0)

{ string str = "沒有查詢到你所想要的數據!"; Font f = new Font("宋體", 10, FontStyle.Bold);

Rectangle r = new Rectangle(e.Bounds.Left + 5, e.Bounds.Top + 5, e.Bounds.Width - 5, e.Bounds.Height - 5);

e.Graphics.DrawString(str, f, Brushes.Black, r); } } }

9、如何顯示水平滾動條?或

設置 this.gridView.OptionsView.ColumnAutoWidth = false;

.....列表寬度自適應內容

gridview1.BestFitColumns();

10、如何定位到第一條數據/記錄?

設置 this.gridView.MoveFirst()

11、如何定位到下一條數據/記錄?
設置 this.gridView.MoveNext()

12、如何定位到最後一條數據/記錄?

設置 this.gridView.MoveLast()

13、設置成一次選擇一行,並且不能被編輯

this.gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;

this.gridView1.OptionsBehavior.Editable = false;

this.gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;

14、如何顯示行號?
private void gvPayList_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();
}
else if (e.RowHandle < 0 && e.RowHandle > -1000)
{
e.Info.Appearance.BackColor = System.Drawing.Color.AntiqueWhite;
e.Info.DisplayText = "G" + e.RowHandle.ToString();
}
}
}

15、如何讓各列頭禁止移動?

設置 gridView1.OptionsCustomization.AllowColumnMoving = false;

16、如何讓各列頭禁止排序?

設置 gridView1.OptionsCustomization.AllowSort = false;

17、如何禁止各列頭改變列寬?

設置 gridView1.OptionsCustomization.AllowColumnResizing = false;

18.拖動滾動條時固定某一列

設置Columns,選擇要固定的列。設置Fixed屬性,可以選擇:固定在左邊、固定在右邊、不固定。

19.獲取選定行,指定列單元格的內容

return gridView1.GetRowCellValue(pRows[0], ColumName).ToString ();

20.分組顯示

OptionsView>OptionsBehavior>AutoExpandAllGroups = True
選擇要分組的列,將GroupIndex屬性設置為0

21.格式化數據

private void gvList_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e)
{
if (this.gvList.FocusedColumn.FieldName == "passQty")
{
string passQty = e.Value.ToString().Trim();
int receiveQty = orderDetailList[this.gvList.FocusedRowHandle].qty;
if (!JXType.IsIntBigThanZero(passQty))
{
e.Valid = false;
e.ErrorText = "合格數量必須為大於等於0小於等於接貨數量的整數!";
}
else
{
if (int.Parse(passQty) > receiveQty)
{
e.Valid = false;
e.ErrorText = "合格數量必須為大於0小於等於接貨數量的整數!";
}
}
}

}

22.合並表頭

///初始化表格

using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Views.BandedGrid;
using DevExpress.XtraEditors.Repository;
private void InitGrid()
{
// advBandedGridView1是表格上的默認視圖,註意這裏聲明的是:BandedGridView
BandedGridView view = advBandedGridView1 as BandedGridView;
view.BeginUpdate(); //開始視圖的編輯,防止觸發其他事件
view.BeginDataUpdate(); //開始數據的編輯
view.Bands.Clear();

view.OptionsView.ShowColumnHeaders = false; //因為有Band列了,所以把ColumnHeader隱藏
//添加列標題
//添加列標題
GridBand bandID = view.Bands.AddBand("ID");
bandID.Visible = false; //隱藏ID列
GridBand bandName = view.Bands.AddBand("姓名");
GridBand bandSex = view.Bands.AddBand("性別");
GridBand bandBirth = view.Bands.AddBand("出生日期");
GridBand bandScore = view.Bands.AddBand("分數");
GridBand bandMath = bandScore.Children.AddBand("數學");
GridBand bandChinese = bandScore.Children.AddBand("語文");
GridBand bandEnglish = bandScore.Children.AddBand("英語");
GridBand bandSubTotal = bandScore.Children.AddBand("小計");
GridBand bandRemark = view.Bands.AddBand("備註");

bandFile.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;//這是合並表頭居中顯示
view.EndDataUpdate();//結束數據的編輯
view.EndUpdate(); //結束視圖的編輯
}

具體可看

dev gridcontrol 合並表頭

23. //動態添加列
DevExpress.XtraGrid.Columns.GridColumn Col1 = new DevExpress.XtraGrid.Columns.GridColumn();
Col1.FieldName = "name";
Col1.Caption = "名字";
Col1.Visible = false;
Col1.VisibleIndex = gvCountry.Columns.Count;
gvCountry.Columns.Add(Col1);

24。設置自動增加的行號

private void gridview_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();
}
else if (e.RowHandle < 0 && e.RowHandle > -1000)
{
e.Info.Appearance.BackColor = System.Drawing.Color.AntiqueWhite;
e.Info.DisplayText = "G" + e.RowHandle.ToString();
}
}

25.特效:gridcontrol中有5種view 型式,普通的是gridview,然後分別為cardview、BandedView、Advanced BandedView、LayoutView;共5種。

1)、view組中把OptionView下的viewmode 設置成“Carousel”就達到這種“旋轉木馬”式的gridcontrol view 特效了
2)、layoutView1.OptionsCarouselMode.PitchAngle 這個屬性決定“旋轉木馬”的pitch angle 螺距角; 螺旋角; 螺旋升角; 俯仰角; 傾角; 節錐半角
3)、Roll Angle 屬性決定著 傾側角度
4)、指定數據源,顯示數據:
//顯示數據
private void showData(List<Employee > list)
{
DataTable dt = new DataTable("OneEmployee");
dt.Columns.Add("Caption", System.Type.GetType("System.String"));
dt.Columns.Add("Department", System.Type.GetType("System.String"));
dt.Columns.Add("PhotoName", System.Type.GetType("System.Byte[]"));

for (int i = 0; i < list.Count; i++)
{
DataRow dr = dt.NewRow();
dr["Caption"] = list[i].Name;
dr["Department"] = list[i].Department;
string imagePath = @"D:\C#\photos\" + list[i].PhotoPath;
dr["PhotoName"] = getImageByte(imagePath);
dt.Rows.Add(dr);
}
gridControl1.DataSource = dt;
}

//返回圖片的字節流byte[]
private byte[] getImageByte(string imagePath)
{
FileStream files = new FileStream(imagePath, FileMode.Open);
byte[] imgByte = new byte [files.Length ];
files.Read(imgByte, 0, imgByte.Length);
files.Close();
return imgByte;
}

26.檢查數據的有效性

在gridview的ValidateRow事件中加入檢查代碼:
#region 檢查數據
private void gridView1_ValidateRow(object sender, ValidateRowEventArgs e)
{
GridView view = sender as GridView;
view.ClearColumnErrors();

if (view.GetRowCellValue(e.RowHandle, "ReceiveDate") == DBNull.Value)
{
e.Valid = false;
view.SetColumnError(view.Columns["ReceiveDate"], "必須指定日期");
}

}

27.設某一列文字和標題局中顯示
gridView1.Columns[0].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
gridView1.Columns[0].AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;

28.列表過濾條件多選

列名.OptionsFilter.FilterPopupMode= DevExpress.XtraGrid.Columns.FilterPopupMode.CheckedList

29.隔行換色的方法

this.gridView1.Appearance.OddRow.BackColor = Color.White; // 設置奇數行顏色 // 默認也是白色 可以省略
this.gridView1.OptionsView.EnableAppearanceOddRow = true; // 使能 // 和和上面綁定 同時使用有效
this.gridView1.Appearance.EvenRow.BackColor = Color.WhiteSmoke; // 設置偶數行顏色
this.gridView1.OptionsView.EnableAppearanceEvenRow = true; // 使能 // 和和上面綁定 同時使用有效

PS:補充項目:

//不顯示內置的導航條。
gc1.UseEmbeddedNavigator = false;

//不顯示分組的面板
gv1.OptionsView.ShowGroupPanel = false;
gv2.OptionsView.ShowGroupPanel = false;

//自動改變行高適應內容
gv1.OptionsView.RowAutoHeight = true;
gv2.OptionsView.RowAutoHeight = true;

//允許自動合並單元格
gv1.OptionsView.AllowCellMerge = true;

//如果主從表中,沒有找到從表內容也要顯示(默認是不顯示的)
gv1.OptionsDetail.AllowExpandEmptyDetails = true;

//顯示自動篩選行(效果跟Excel的自動篩選差不多)
gv2.OptionsView.ShowAutoFilterRow = true;

//使得GridView不能編輯
gv1.OptionsBehavior.Editable = false;
gv2.OptionsBehavior.Editable = false;

//內置編輯器顯示的模式
gv1.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.Click;

//主從表顯示的功能是否可用
//gv1.OptionsDetail.EnableMasterViewMode = false;

//如果顯示了主從表,每點開個加號,就會顯示一個Tabs,裏面往往顯示了兩個面板。
//事實上沒必要這樣幹的。一般選擇關閉。關閉的對象是主GridView的此項屬性。
gv1.OptionsDetail.ShowDetailTabs = false;

PS:處理主從表顯示

//設置連接字符串
DbHelperSQL.ConnectionString = DbHelperSQL.CreateConnectionString(@"BUDDHAS\SQLEXPRESS", "sa", "00000", "RTDMES");

DataSet ds = new DataSet();
//父GridView的數據
string sql = "select sc_prno,sc_prna from mespb04h";
DbHelperSQL.QueryD(sql,ds,"main");

//子GridView的數據
sql = "select pa_name,pa_no,sc_prno from mespb09h";
DbHelperSQL.QueryD(sql,ds,"son");

//這個是顯示主從表的關鍵,

一、GridControl通過檢查DataSet.Relations的內容來分析數據
//二、關鍵名必須與設計GridView的層級關系的level name相同,否則,結果在意料之外。
DataRelation relation = new DataRelation("aa",
ds.Tables["main"].Columns["sc_prno"],
ds.Tables["son"].Columns["sc_prno"]);

ds.Relations.Add(relation);

//這也是一個關鍵,不能直接設為:ds,必須指明到表。
gc1.DataSource = ds.Tables["main"];

//添加分組統計字段
gridView1.GroupSummary.Add(SummaryItemType.Count, "Product Name", gridView1.Columns["Product Name"]);
gridView1.GroupSummary.Add(SummaryItemType.Average, "Unit Price", gridView1.Columns["Unit Price"]);

//設置分組統計字段的顯示格式
((GridSummaryItem)gridView1.GroupSummary[gridView1.GroupSummary.Count - 1]).DisplayFormat = "AVR={0:c}";

//設置分組字段
gridView1.Columns["Discontinued"].GroupIndex = 0;

//打開所有分組
gridView1.ExpandAllGroups();

//為控件畫邊框
ControlPaint.DrawBorder3D(e.Graphics,
r,
(e.Info.State == DevExpress.Utils.Drawing.ObjectState.Pressed ? Border3DStyle.SunkenOuter

: Border3DStyle.RaisedInner));


//焦點單元格的列
gridview1.FocusedColumn

//焦點單元格所在行的行號
gridview1.FocusedRowHandle

//焦點單元格的值
gridview1.FocusedValue

//指定單元格顯示的字符串值
gridview1.GetRowCellDisplayText(int rowHandler,string feildName)

//指定單元格的值
gridview1.GetRowCellValue(int rowHandler,string feildName)

//設置焦點單元格所在行指定列的值
gridview1.SetFocusedRowCellValue(GridColumn col,object value)

//設置焦點單元格的值
gridview1.SetFocusedValue(object value)

//設置指定單元格的值
//有了這個函數,就可以手工創建行了。
gridview1.SetRowCellValue(int rowHandler,string feildName,object value)
gridview1.SetRowCellValue(int rowHandler,GridColumn col,object value)

//添加新行的方法

gv1.AddNewRow();
foreach (GridColumn col in gv1.Columns)
{
  //用RowCount-1的辦法是不行的
  //gv1.SetRowCellValue(gv1.RowCount-1, col, "aaaaa");
  gv1.SetRowCellValue(gv1.FocusedRowHandle, col, "aaaaa");
}

gv1.UpdateCurrentRow();

//根據綁定的數據源自動產生列

gv1.PopulateColumns();

//為列添加下拉列表(加其他類型如日期、UpDown同理)
RepositoryItemLookUpEdit ri = new RepositoryItemLookUpEdit();
//ri.PopupWidth = 200;
ri.DisplayMember = "sc_prna";
ri.ValueMember = "sc_prno";
DataTable dt1 = DbHelperSQL.QueryT("select sc_prno,sc_prna from mespb04h");
ri.DataSource = dt1;
gv1.Columns["sc_prno"].ColumnEdit = ri;

零零散散的先總結一下吧

1.TextEditor(barEditItem)取文本

string editValue = barEditItem1.EditValue.ToString(); //錯誤,返回null

string editValue = ((DevExpress.XtraEditors.TextEdit)barEditItem).EditValue.ToString(); //正確,返回文本框內容

2.ComboBoxEdit(barEditItem)添加Item

string item = "comboboxItem1";

((DevExpress.XtraEditors.Repository.RepositoryItemComboBox)this.barEditItem.Edit).Items.Add(item);

3.ComboBoxEdit(barEditItem)取文本

string itemValue = this.barEditItem.EditValue.ToString();

4.Ribbon控件

//添加Page

DevExpress.XtraBars.Ribbon.RibbonPage ribbonPage = new RibbonPage();

ribbonControl.Pages.Add(ribbonPage);

//添加Group

DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup = new RibbonPageGroup();

ribbonPage.Groups.Add(ribbonPageGroup);

//添加Button

DevExpress.XtraBars.BarButtonItem barButtonItem = new BarButtonItem();

ribbonPageGroup.ItemLinks.Add(barButtonItem);

//添加barSubItem

DevExpress.XtraBars.BarSubItem barSubItem = new BarSubItem();

ribbonPageGroup.ItemLinks.Add(barSubItem);

//barSubItem下添加Button

barSubItem.AddItem(barButtonItem);

//奇怪的刪除Page問題

while (this.ribbonControl.Pages.Count > 0)

{

ribbonControl.Pages.Remove(ribbonControl.Pages[0]); //調試正常,運行報異常

}

while (this.ribbonControl.Pages.Count > 0)

{

ribbonControl.SelectedPage = ribbonControl.Pages[0];

ribbonControl.Pages.Remove(ribbonControl.SelectedPage); //運行正常

}

//禁止F10鍵Tips

ribbonControl.Manager.UseF10KeyForMenu = false;

//DX按鈕

ApplicationIcon屬性改變圖標

右鍵 Add ApplicationMenu 添加evExpress.XtraBars.Ribbon.ApplicationMenu

5.HitInfo

//在Tab頁上點擊右鍵的事件響應

void xtraTabbedMdiManager_Event(object sender, MouseEventArgs e)

{

if (e.Button == MouseButtons.Right && ActiveMdiChild != null)

{

DevExpress.XtraTab.ViewInfo.BaseTabHitInfo hInfo = xtraTabbedMdiManager.CalcHitInfo(e.Location);

//右鍵點擊位置:在Page上且不在關閉按鈕內

if (hInfo.IsValid && hInfo.Page != null && !hInfo.InPageCloseButton)

{

this.popupMenu.ShowPopup(Control.MousePosition);//在鼠標位置彈出,而不是e.Location

}

}

}

//在ribbon上點擊右鍵的事件響應

private void ribbonControl1_ShowCustomizationMenu(object sender, RibbonCustomizationMenuEventArgs e)

{

//禁掉原系統右鍵菜單

e.ShowCustomizationMenu = false;

//右鍵位置:在barButtonItem上

if (e.HitInfo != null

&& e.HitInfo.InItem

&& e.HitInfo.Item.Item is BarButtonItem)

{

this.popupMenu.ShowPopup(Control.MousePosition);

}

//右鍵位置:在barSubItem中的barButtonItem上

else if (e.Link != null

&& e.Link.Item != null

&& e.Link.Item is BarButtonItem)

{

this.popupMenu.ShowPopup(Control.MousePosition);

}

}

6.皮膚

//添加皮膚程序集後註冊皮膚

DevExpress.UserSkins.OfficeSkins.Register();

DevExpress.UserSkins.BonusSkins.Register();

//設置皮膚

DevExpress.LookAndFeel.UserLookAndFeel.Default.SetSkinStyle("Liquid Sky"); //若皮膚名稱錯誤則按系統默認設置(第一個皮膚)

//GalleryFilterMenuPopup事件設置彈出篩選菜單的“All Groups”為中文

private void rgbiSkins_GalleryFilterMenuPopup(object sender, GalleryFilterMenuEventArgs e)

{

e.FilterMenu.ItemLinks[n].Caption = "所有皮膚"; //n=分組數+1

}

//GalleryInitDropDownGallery事件設置彈出皮膚列表的表頭“ALL Groups”為中文

private void rgbiSkins_GalleryInitDropDownGallery(object sender, InplaceGalleryEventArgs e)

{

e.PopupGallery.FilterCaption = "所有皮膚";

}

7.dockManager

將視圖的狀態信息保存到xml文件

dockManager1.SaveLayoutToXml("..\\UserConfig\\ViewInfo.xml");

導出xml中保存的狀態信息

dockManager1.RestoreLayoutFromXml("..\\UserConfig\\ViewInfo.xml");

8.barManager

設置bar的字體與系統字體

barAndDockingController1.AppearancesBar.ItemsFont = new Font(this.Font.FontFamily, currentFontSize);

9.設置系統字體

DevExpress.Utils.AppearanceObject.DefaultFont = new Font(this.Font.FontFamily, currentFontSize);

10.treeView

為tree節點加右鍵菜單並選中該節點

private void treeList1_MouseDown(object sender, MouseEventArgs e)

{

if (e.Button == MouseButtons.Right)

{

DevExpress.XtraTreeList.TreeListHitInfo hi = treeList1.CalcHitInfo(e.Location);

if (hi.Node != null && hi.Node.ImageIndex == 5) //葉子節點的ImageIndex == 5

{

TreeListNode node = treeList1.FindNodeByID(hi.Node.Id);

treeList1.FocusedNode = node;

this.popupMenu1.ShowPopup(MousePosition);

}

}

}

---------------------------------------------------------------------------------------------------------------------------------------------------------

DevExpress使用心得

Developer Express(以下簡稱dev) 這個第三方控件是VS2005自帶的datagridview控件的重寫版本.對於一些grid外觀,模板列的設置有非常簡單的方法.而且控制起來基本和datagridview一樣.所以還是比較方便的.把dev控件拖到窗體以後,會發現多了兩個控件gridcontrol1,gridview1,下面針對這期間使用dev的一些總結寫在下面(主要是連接數據庫,綁定字段和模板列的設置):

1. 設置數據源:

string sql = "select fid,fname from dual";

DataTable dt = DALUse.Query(sql).Tables[0];

gridControl1.DataSource = dt;

*:Daluse是項目數據庫連接基類,不用特別理會

2.綁定字段:

這部分工作主要是在Designer中進行的,dev的Designer設計器提供了非常方便的設置方式.我麽可以省去敲代碼,直接在設計器中就可以完成了.在左邊選Columns,添加完列以後,在列的FieleName屬性添加你要綁定列的字段名(ps:比如我的連接SQL語句是:select fid,fname from dual.我想要把fid綁定到列1.那就在列1的FieldName屬性寫FID就可以了 ),這裏有非常重要的一點,對於Oracle數據庫,所有的在設計器裏寫的程序中的字段名必須大寫,否則可能綁定不上字段,sqlserver沒有這個限制.通過代碼其實也可以實現,具體代碼如下:

gridView1.Columns[0].FieldName = "FID";

*:gridcontrol只用在設置數據源,以後的操作大多都有gridview這個控件了.他們是一體的,可以在頁面的設計代碼中找到將他們關聯的一句話,這是系統自動寫的:gridcontrol1.mainview=this.gridview1.

2. 模板列的設置:

模板列可以很輕松的讓用戶實現在表格中進行查找編輯.

同樣,這部分工作在dev的Designer中進行.在左邊選In-Place Editor Repository,上面的ADD提供了比較豐富的模板列類型,從中選取一個就可以了.模板列建好以後就要和我們當前有的數據列進行綁定了.返回到Columns中,假如列1是我們想設定的,在他的屬性中找到ColumnEdit.選擇我們加進去的模板列就可以了.對於模板列我們最常用的還是LookUpEdit.

這裏簡單說下他的設置和用法:

LookUpEdit是彈出的一個小的grid,從它裏面我們可以實現自動篩選裏面的信息.

首先從In-Place Editor Repository中添加LookUpEdit.取名為Re1.然後.在他的Columns屬性中添加3列.Caption依次為:編號,姓名,性別.FieldName依次為:FID,FNAME,FSEX.然後將Re1的NullText設置成空.

AutoSearchColumnIndex屬性設置為2.ImmediatePopup屬性設置為True.

SearchMode設置為OnlyInPopup.

然後將這個模板列附加到我們上面提到的列1(也就是將列1的ColumnEdit屬性設成Re1)

最後我們還要在代碼裏面給Re1綁定數據源和顯示項.

Re1.DataSource = DALUse.Query("select fid,fname,fsex from dual").Tables[0];

Re1.DisplayMember = "FSEX";

Re1.ValueMember = "FNAME";

*:對於Oracle數據庫字段一定要用大寫,切記!!

至此,我們的LookUpEdit模板列就設置完成了,它現在已經實現了通過性別列檢索,然後將姓名列附到我們的列1上.

對於LookUpEdit可以實現過濾主要是AutoSearchColumnIndex和SearchMode屬性.可以參見幫助知道它們的用法: ms-help://DevExpress.NETv7.2/DevExpress.XtraEditors/DevExpressXtraEditorsControlsSearchModeEnumtopic.htm

Ps:

//去掉上面的篩選條

gridView1.OptionsView.ShowGroupPanel = false;

//設某一列只讀或者不可編輯

gridView1.Columns[0].OptionsColumn.AllowEdit = false;

gridView1.Columns[0].OptionsColumn.ReadOnly = false;

//設某一列文字和標題局中顯示 gridView1.Columns[0].AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;

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

//去掉某一列上面的自動篩選功能(Filter) gridView1.Columns[0].OptionsFilter.AllowAutoFilter = false;

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

//設置凍結列(左凍結)

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

//得到單元格數據(0行0列)

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

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

//設置單元格數據(將0行0列的單元格賦值123)

gridView1.SetRowCellValue(0, gridView1.Columns[0], "123");

//手動添加dev的列

DevExpress.XtraGrid.Columns.GridColumn Col1=new DevExpress.XtraGrid.Columns.GridColumn ();

Col1.FieldName="FID";

Col1.Visible=true;

Col1.VisibleIndex=gridView1.Columns.Count;

gridView1.Columns.Add(Col1);

//設置自動增加的行號,需要先添加給gridview添加事件CustomDrawRowIndicator

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

{

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

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

}

//添加datatable數據行,數據列

DataTable dt = new DataTable();

dt.Columns.Add("Col1");

DataRow dr = dt.NewRow();

dr[0] = "123";

dt.Rows.Add(dr);

*以上這些都可以在Designer中進行設置,而不用去敲代碼

對於第三方控件的整體修改和保存,具體說明如下:

1. 刪除: (修改了dgvdel裏的datagridviewdel方法)

public static void datagridviewdel_Dev(DevExpress.XtraGrid.Views.Grid.GridView Mydgv)

{

if (MessageBox.Show("你確定要刪除選中的記錄嗎?", "刪除提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, 0, false) == DialogResult.Yes)

{

int iSelectRowCount = Mydgv.SelectedRowsCount;

if (iSelectRowCount > 0)

{

Mydgv.DeleteSelectedRows();

}

}

}

2. 新增: (對於新增,其本身的AddNewRow方法就可以做到)

private void btn_add_Click(object sender, EventArgs e)

{

gridView1.AddNewRow();

}

具體如果對於新加行還有什麽特別的設置,可以在它gridView1_InitNewRow事件中填寫:

private void gridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)

{

ColumnView View = sender as ColumnView;

View.SetRowCellValue(e.RowHandle, View.Columns[0], gridView1.GetRowCellValue(gridView1.GetRowHandle(gridView1.RowCount - 2), gridView1.Columns[0])); //復制最後一行的數據到新行

View.SetRowCellValue(e.RowHandle, View.Columns[1], gridView1.GetRowCellValue(gridView1.GetRowHandle(gridView1.RowCount - 2), gridView1.Columns[1])); //復制最後一行的數據到新行

}

3. 保存 (第三方控件提供的RefreshData和RefreshDataSource方法對於保存數據都不好使,最後還是使用了Dgvsave的datagridviewsave方法,用這個方法就可以)

註:代碼中出現多gridView1全為第三方控件的gridView.

示例:

去掉上面的”Drag a column header here to group by that column”

我們拖動一個gridcontrol控件後,在出現上會出現一下效果:

他默認的好多地方都是用英文表示出來的,所以我們得用一些相關的屬性設置來達到我們實際想要達到的效果.首先就是要去掉上面的一個英文條”Drag a column header here to group by that column”.我們可以通過手工設置和代碼編寫來實現,以後針對第三方控件的屬性都可以用這兩種方法來實現.手工設置:點擊左下角的”Run Designer”按鈕.


這樣我們就進入了Dev的設計器(所有的對於控件的控制都可以在這裏設置).然後點擊左邊的Main選項卡中的Views項.有邊欄目裏會出現N多屬性,我們找到OptionViews,展開它,然後將裏面的ShowGroupPanel屬性設成false就OK了.代碼編寫:

我們可以直接在構造函數或者頁面的打開事件中寫入代碼:

gridView1.OptionsView.ShowGroupPanel = false;

兩種方法可以達到同樣的效果.

設置外觀

接下來我們來設置它的外觀.Dev給我們提供了很多外觀的模板,這樣使得我們不用在通過復雜的代碼來設置他的外觀,我們直接用手工設置就可以完成了!點擊Dev設計器中左邊的Appearance選項卡的Style Schemes項:


通過在裏面設置外觀,然後點擊右小角的Apply按鈕就可以很輕松的設置各種各樣的外觀了.

去掉控件默認的Filter功能出現英文的情況

我們按照上面所講的方法給Dev添加列後,在點擊列頭的小按鈕的時候會出現這樣的效果(出現了我們不想看到的英文):


這個對於我們來說是比較討厭的.我們可以在Dev的設計器中消滅它.點擊設計器中左邊的Main選項卡的Columns項.選擇你想設置的列,然後點擊右上角他們的選項卡:


選擇Filter options選項卡,然後將裏面的AllowAutoFilter,AllowFilter,ImmediateUpdateAutoFilter屬性分別設成false就可以了.這樣這列的AutoFilter功能就去掉了(僅限於這列)!如果你夠細心的話,你會發現上面的選項卡Column options裏面的屬性也都是特別使用的:


這裏面的屬性不用說,我想你也知道怎麽用了(他也是只針對一列設置的).

關閉右鍵點擊列頭會出現英文的情況:

在Dev的設計器中選擇左邊Main選項卡中的Views項.找到OptionsMenu,然後展開,將裏面的EnableColumnMenu設成false就可以了.

=======================================================================================================

DevExpress控件的GridControl控件小結


(由於開始使用DevExpress控件了,所以要點滴的記錄一下)

1.DevExpress控件組中的GridControl控件不能使橫向滾動條有效。現象:控件中的好多列都擠在一起,列寬都變的很小,根本無法正常瀏覽控件單元格中的內容。

解決:

gridView1.OptionsView.ColumnAutoWidth屬性是true,即各列的寬度自動調整,你把它設成false,就會出現了。

2.使單元格不可編輯。

gridcontrol -->gridview -->OptionsBehavior -->Editable=false

3.沒有下拉滾動條事件怎麽辦?現象:因為需要加載大數據量數據,所以不能一次把所有數據讀入datatable進行綁定,所以決定在用戶進一步瀏覽數據時進行數據的實時加載工作,就是每當用戶拉動滾動條時,多加載一些數據進入datatable.沒有找到合適的滾動條事件,於是用這個事件代替了,非常合適我的需求.

TopRowChanged事件.

4.獲取選定行,指定列單元格的內容

private string GetSelectOID()
{
int[] pRows = this.gridView1.GetSelectedRows();
if (pRows.GetLength(0) > 0)
return gridView1.GetRowCellValue(pRows[0], mOIDFiledName).ToString ();
else
return null;
}

//mOIDFiledName為要獲取列的列名

5.去除"Drag a Column Header Here To Group by that Column"

屬性Gridview->Option View->Show Group Panel=false,就好了

6.在gridcontrol中添加checkbox復選框

gridview->run designer->columns->選擇要變成復選框的那一列->column edit->new(在這裏可以選擇很多類型)

加載checkbox數據時,費了一點時間,checkbox的復選框怎麽點擊,一失去焦點是,選擇的操作就無效了,問題就出在datatable的綁定上了,一定要綁定一個布爾的類型.

代碼是這樣滴!

private void FrmCreateLegend_Load(object sender, EventArgs e)
{
IFeatureLayer pFeatureLayer;
IDataset pDataset;
string pName;
DataTable pDatatable = new DataTable();
pDatatable.Columns.Add("圖層名稱", System.Type.GetType("System.String"));
pDatatable.Columns.Add("選擇", System.Type.GetType("System.Boolean"));
DataRow pDataRow;
object[] rowArray = new object[2];
for (int i = 0; i < mFeatureLayers.Count; i++)
{
pDataRow = pDatatable.NewRow();
pFeatureLayer = mFeatureLayers[i] as IFeatureLayer;
rowArray[0] = pFeatureLayer.Name;
rowArray[1] = false;
pDataRow.ItemArray = rowArray;
pDatatable.Rows.Add(pDataRow);
}

this.gridMark.DataSource = pDatatable;
this.gridMark.Refresh();
}
註意:創建的datatable的列名一定要和gridview中的列的fieldname屬性值是一個名字,不然,你會發現添加了和你綁定的datatalbe一樣多的行,可是行裏面卻沒有內容的.

7.多選

GridControl->GridView->屬性->OptinosSelecttion->MultiSelect

8.不顯示子表信息

當我們對DataTable建立父子關系後,將父表綁定在Grid上,會造成關系列上有加號顯示,並且可以展開.如果你覺得展開的信息對你沒有意義的話,是可以關掉的.這是需要修改屬性

屬性Gridview->Option View->ShowDetailButtons=false

DEVexpress GridControl 屬性設置