1,、GridControl控件的數(shù)據(jù)顯示的樣式控制
如上兩圖所示,我們有時(shí)候需要控制列表訪問過的顏色變化,,或者是時(shí)間顯示格式等內(nèi)容,,這個(gè)時(shí)候設(shè)置GridView的RowCellStyle即可實(shí)現(xiàn),如下所示,。
1 | this .gridView1.RowCellStyle += new DevExpress.XtraGrid.Views.Grid.RowCellStyleEventHandler(gridView1_RowCellStyle);
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | void gridView1_RowCellStyle( object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
{
if (e.Column.FieldName == "PublishType" )
{
if (e.CellValue != null && e.CellValue.ToString() == "中介" )
{
e.Appearance.BackColor = Color.DeepSkyBlue;
e.Appearance.BackColor2 = Color.LightCyan;
}
}
if (e.Column.FieldName == "PublishTime" )
{
e.Column.DisplayFormat.FormatString = "yyyy-MM-dd HH:mm:ss" ;
}
if (e.Column.FieldName == "Title" )
{
string id = this .winGridViewPager1.gridView1.GetRowCellDisplayText(e.RowHandle, "Id" );
if (historyDict.ContainsKey(id))
{
e.Appearance.BackColor = Color.DeepSkyBlue;
e.Appearance.BackColor2 = Color.LightCyan;
}
}
}
|
2,、在LayoutControl布局中固定控件寬度
固定寬度后的真實(shí)效果。
為了使得界面統(tǒng)一性及更好的控制性,,我們一般使用LayoutControl布局控件作為我們添加控件的布局容器,,但是這個(gè)控件默認(rèn)是對(duì)其中的控件 進(jìn)行按窗口比例進(jìn)行縮放的,有些客戶就不喜歡這些特點(diǎn),,因?yàn)樗麄兊娘@示器可能是30寸的(夸張一點(diǎn)點(diǎn),,不過很多寬屏的),這樣很多輸入框就會(huì)被拉得很長(zhǎng),, 這樣小小一個(gè)輸入框,,可能有很長(zhǎng)的一段空白的距離,那樣可能真的不好看,,如下圖所示,。
設(shè)置固定寬度,其實(shí)不是很麻煩,,需要設(shè)置幾個(gè)屬性即可
1) 設(shè)置控件的SizeConstraintsType為DevExpress.XtraLayout.SizeConstraintsType.Custom;
2)設(shè)置控件的FillControlToClientArea 為False
3)設(shè)置控件的ControlMaxSize的大?。ū匾獣r(shí)也可以設(shè)置ControlMinSize),,設(shè)置例子如下所示。
3,、GridControl中的GridView內(nèi)容打印
由于GridView的良好封裝性,,實(shí)現(xiàn)打印的代碼很簡(jiǎn)單。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | private void menu_Print_Click( object sender, EventArgs e)
{
PrintableComponentLink link = new PrintableComponentLink( new PrintingSystem());
link.Component = this .gridControl1;
link.Landscape = true ;
link.PaperKind = System.Drawing.Printing.PaperKind.A3;
link.CreateMarginalHeaderArea += new CreateAreaEventHandler(Link_CreateMarginalHeaderArea);
link.CreateDocument();
link.ShowPreview();
}
private void Link_CreateMarginalHeaderArea( object sender, CreateAreaEventArgs e)
{
string title = string .Format( "年度大體檢-({0}年度)" , this .txtYear.Text);
PageInfoBrick brick = e.Graph.DrawPageInfo(PageInfo.None, title, Color.DarkBlue,
new RectangleF(0, 0, 100, 21), BorderSide.None);
brick.LineAlignment = BrickAlignment.Center;
brick.Alignment = BrickAlignment.Center;
brick.AutoWidth = true ;
brick.Font = new System.Drawing.Font( "宋體" , 11f, FontStyle.Bold);
}
|
4,、設(shè)置GridView的行指示器(行頭)顯示行號(hào)
在我的分頁控件以及Winform開發(fā)框架很多項(xiàng)目介紹里面,,很多都顯示了行號(hào),其實(shí)這個(gè)在DevExpress中的實(shí)現(xiàn)很簡(jiǎn)單,,如果需要,,可以實(shí)現(xiàn)在自己的代碼里面。
1) 先實(shí)現(xiàn)GridView的CustomDrawRowIndicator事件,,實(shí)現(xiàn)代碼如下所示,。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | private void advBandedGridView1_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();
}
}
}
|
2)然后設(shè)置GridView控件的IndicatorWidth為合適的寬度,如40左右則比較好,。
這樣設(shè)置后,,就能順利顯示行號(hào)了,是不是很方便呢,。
5,、GridView表頭多行顯示(折行),表頭及行內(nèi)容居中操作
在一些自定義的列表中,,我們?yōu)榱撕侠盹@示表頭的內(nèi)容,可能會(huì)要求表頭顯示的文字可以折行顯示,,然后還需要內(nèi)容居中顯示,,那么在DevExpress該如何操作呢,代碼設(shè)置如下所示,。
1 2 3 4 5 6 7 | this .gridView1.ColumnPanelRowHeight = 40;
this .gridView1.OptionsView.AllowHtmlDrawHeaders = true ;
this .gridView1.Appearance.HeaderPanel.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap;
this .gridView1.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
this .gridView1.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
|
然后設(shè)置表頭的時(shí)候,,設(shè)置內(nèi)容使用\r\n來進(jìn)行換行,如:體重\r\n(kg)
下面是我分頁控件里面的例子設(shè)置,,供參考,。
1 2 3 4 5 6 | this .winGridViewPager1.AddColumnAlias( "Weight" , "體重\r\n(kg)" );
this .winGridViewPager1.AddColumnAlias( "Pulse" , "脈搏\r\n(次)" );
this .winGridViewPager1.AddColumnAlias( "BloodSystolic" , "收縮壓" );
this .winGridViewPager1.AddColumnAlias( "BloodDiastolic" , "舒張壓" );
this .winGridViewPager1.AddColumnAlias( "SightLeft" , "視力\r\n(左)" );
this .winGridViewPager1.AddColumnAlias( "SightRight" , "視力\r\n(右)" );
|
6、控件內(nèi)容輸入問題
在客戶使用軟件的時(shí)候,,反饋說有一些數(shù)字輸入框,、日期輸入框,不支持鍵盤輸入內(nèi)容,,經(jīng)測(cè)試,,確實(shí)是存在這個(gè)問題,默認(rèn)的數(shù)字,、日期等輸入,,都要切換輸入法才可以輸入,,不能默認(rèn)就支持?jǐn)?shù)字的輸入,那么是否有辦法解決呢,,當(dāng)然辦法總是有的,。
其實(shí)只需要設(shè)置 ImeMode=Off 即可解決問題,關(guān)于這個(gè)屬性,,大家可以參考下面的介紹,。(就開發(fā)而言,記得逢數(shù)字,,日期的控件,,必須設(shè)置ImeMode=Off ,否則你的軟件使用客戶會(huì)罵娘,。
ImeMode 枚舉:指定一個(gè)值,,該值是用來確定在選定了對(duì)象時(shí)該對(duì)象的輸入法編輯器 (IME) 的狀態(tài)。 以下是微軟的解釋:
成員名稱 |
說明 |
Alpha |
字母數(shù)字單字節(jié)字符 (SBC),。此設(shè)置僅對(duì)朝鮮語和日語 IME 有效,。 |
AlphaFull |
字母數(shù)字雙字節(jié)字符。此設(shè)置僅對(duì)朝鮮語和日語 IME 有效,。 |
Close Disable |
IME 被禁用,。如果使用此設(shè)置,則用戶無法從鍵盤打開 IME,,而且 IME 浮動(dòng)窗口處于隱藏狀態(tài),。 |
Hangul |
朝鮮文 SBC。此設(shè)置僅對(duì)朝鮮語 IME 有效,。 |
HangulFull |
朝鮮文 DBC,。此設(shè)置僅對(duì)朝鮮語 IME 有效。 |
Hiragana |
平假名 DBC,。此設(shè)置僅對(duì)日語 IME 有效,。 |
Inherit |
繼承父控件的 IME 模式。 |
Katakana |
片假名 DBC,。此設(shè)置僅對(duì)日語 IME 有效,。 |
KatakanaHalf |
片假名 SBC。此設(shè)置僅對(duì)日語 IME 有效,。 |
NoControl |
無(默認(rèn)),。 |
Off |
IME 已關(guān)閉。此模式指示 IME 已關(guān)閉,,這意味著該對(duì)象的行為方式與英語輸入模式相同,。 此設(shè)置僅對(duì)日語、簡(jiǎn)體中文和繁體中文 IME 有效,。 |
On |
IME 已打開,。此值指示 IME 已打開,,可以輸入中文或日語特定的字符。此設(shè)置僅對(duì)日語,、簡(jiǎn)體中文和繁體中文 IME 有效,。 |
7、多行表頭的實(shí)現(xiàn)
有時(shí)候,,我們?yōu)榱艘恍┨厥獾男枰?,要?duì)表頭進(jìn)行特別的排版,使其支持多行表頭的效果,,如上圖所示,,這樣方便對(duì)各項(xiàng)內(nèi)容進(jìn)行歸類顯示,易于閱讀,,在DevExpress中應(yīng)該如何實(shí)現(xiàn)這個(gè)效果呢,?
1)先在設(shè)計(jì)模式將普通的GridView轉(zhuǎn)換為BandedGridView或者AdvBandedGridView,這樣才能支持這種多行表頭的做法,,如下所示,。
2)定義一些字段,用來顯示其中的內(nèi)容,,如下圖所示,。
3)定義一些Band列,設(shè)置相關(guān)的屬性,,并把設(shè)計(jì)界面中的字段列表拖動(dòng)到對(duì)應(yīng)過的Band列上面,,這樣就構(gòu)成了一個(gè)Band列和字段內(nèi)容的對(duì)應(yīng)關(guān)系。
完成上面的綁定關(guān)系后,,記得設(shè)置GridView控件的屬性,,使其不要顯示原本的ColumnHeader等內(nèi)容。
設(shè)置好這些內(nèi)容,,才能合理、完美顯示出多行表頭的信息,。
8.在GridControl控件中使用SearchLookUpEdit構(gòu)建數(shù)據(jù)快速輸入
一個(gè)實(shí)際的案例就是門診的時(shí)候,,醫(yī)生用藥的情況,除了選擇其他內(nèi)容外,,主要的就是快速錄入藥品信息,。我們平常去大一點(diǎn) 的醫(yī)院看病,好像看到的多數(shù)操作都是這樣,。還有一種方式就是銷售人員提供的報(bào)價(jià)單,,從產(chǎn)品里面選擇信息,然后修改下價(jià)格,,這些場(chǎng)景都是很適合這樣的操作的,。
|