DevExpress控件之GridControl控件
DevExpress控件之GridControl控件
http://blog.sina.com.cn/s/blog_6769068d0100iucx.html
?
1.? 設置數(shù)據(jù)源:
string sql = "select fid,fname from dual";?
?DataTable dt = DALUse.Query(sql).Tables[0];
gridControl1.DataSource = dt;
*:Daluse是項目數(shù)據(jù)庫連接基類,不用特別理會?
2.綁定字段:?
這部分工作主要是在Designer中進行的,dev的Designer設計器提供了非常方便的設置方式.我么可以省去敲代碼,直接在設計器中就可以完成了.在左邊選Columns,添加完列以后,在列的FieleName屬性添加你要綁定列的字段名(ps:比如我的連接SQL語句是:select
fid,fname from dual.我想要把fid綁定到列1.那就在列1的FieldName屬性寫FID就可以了??
),這里有非常重要的一點,對于Oracle數(shù)據(jù)庫,所有的在設計器里寫的程序中的字段名必須大寫,否則可能綁定不上字段,sqlserver沒有這個限制.通過代碼其實也可以實現(xiàn),具體代碼如下:
gridView1.Columns[0].FieldName = "FID";?
*:gridcontrol只用在設置數(shù)據(jù)源,以后的操作大多都有gridview這個控件了.他們是一體的,可以在頁面的設計代碼中找到將他們關聯(lián)的一句話,這是系統(tǒng)自動寫的:gridcontrol1.mainview=this.gridview1.
?
2.? 模板列的設置:
模板列可以很輕松的讓用戶實現(xiàn)在表格中進行查找編輯.
同樣,這部分工作在dev的Designer中進行.在左邊選In-Place Editor
Repository,上面的ADD提供了比較豐富的模板列類型,從中選取一個就可以了.模板列建好以后就要和我們當前有的數(shù)據(jù)列進行綁定了.返回到Columns中,假如列1是我們想設定的,在他的屬性中找到ColumnEdit.選擇我們加進去的模板列就可以了.對于模板列我們最常用的還是LookUpEdit.?
這里簡單說下他的設置和用法:?
LookUpEdit是彈出的一個小的grid,從它里面我們可以實現(xiàn)自動篩選里面的信息.?
? 首先從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綁定數(shù)據(jù)源和顯示項.?
Re1.DataSource = DALUse.Query("select fid,fname,fsex from dual").Tables[0];?
? Re1.DisplayMember = "FSEX";?
Re1.ValueMember = "FNAME";?
*:對于Oracle數(shù)據(jù)庫字段一定要用大寫,切記!!?
至此,我們的LookUpEdit模板列就設置完成了,它現(xiàn)在已經(jīng)實現(xiàn)了通過性別列檢索,然后將姓名列附到我們的列1上.?
對于LookUpEdit可以實現(xiàn)過濾主要是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;
//得到單元格數(shù)據(jù)(0行0列)
string ss=gridView1.GetRowCellDisplayText(0, gridView1.Columns[0]);?
string ss = gridView1.GetRowCellValue(0, gridView1.Columns[0]);
?
//設置單元格數(shù)據(jù)(將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數(shù)據(jù)行,數(shù)據(jù)列???????????????????
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])); //復制最后一行的數(shù)據(jù)到新行
?
???????????
View.SetRowCellValue(e.RowHandle, View.Columns[1],
gridView1.GetRowCellValue(gridView1.GetRowHandle(gridView1.RowCount - 2),
gridView1.Columns[1])); //復制最后一行的數(shù)據(jù)到新行
?
??????? }
?
?
?
3.???? 保存
(第三方控件提供的RefreshData和RefreshDataSource方法對于保存數(shù)據(jù)都不好使,最后還是使用了Dgvsave的datagridviewsave方法,用這個方法就可以)
?
注:代碼中出現(xiàn)多gridView1全為第三方控件的gridView.
?
?
?
對于這個第三方控件,我們也有好多東西還在研究!希望大家通過我們的講解能對這個控件有個初步的認識,并且我們大家一起交流學習!
?
轉(zhuǎn)載于:https://www.cnblogs.com/wpf123/archive/2011/03/06/2052918.html
總結
以上是生活随笔為你收集整理的DevExpress控件之GridControl控件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WebSpher 6.1 安装与应用
- 下一篇: DB2 9 底子(730 考试)认证指南