翻譯|使用教程|編輯:龔雪|2025-03-04 11:19:09.000|閱讀 120 次
概述:本文主要介紹如何使用DevExpress WinForms Data Grid組件實(shí)現(xiàn)識(shí)別行操作,歡迎下載最新版組件體驗(yàn)!
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
DevExpress WinForms擁有180+組件和UI庫(kù),能為Windows Forms平臺(tái)創(chuàng)建具有影響力的業(yè)務(wù)解決方案。DevExpress WinForms能完美構(gòu)建流暢、美觀且易于使用的應(yīng)用程序,無(wú)論是Office風(fēng)格的界面,還是分析處理大批量的業(yè)務(wù)數(shù)據(jù),它都能輕松勝任!
在本教程中,您將了解到DevExpress WinForms網(wǎng)格視圖標(biāo)識(shí)其行的方式。
在上文中(),我們?yōu)榇蠹医榻B了純數(shù)據(jù)中的行標(biāo)識(shí)符、排序和過(guò)濾數(shù)據(jù)時(shí)行標(biāo)識(shí)符之間的差異等,本文將繼續(xù)介紹分組數(shù)據(jù)時(shí)行標(biāo)識(shí)符之間的差異、特殊行句柄等,歡迎下載最新版組件體驗(yàn)~
獲取DevExpress WinForms v24.2正式版下載
DevExpress技術(shù)交流群11:749942875 歡迎一起進(jìn)群討論
行句柄和數(shù)據(jù)源索引之間的差異
接下來(lái)看看分組數(shù)據(jù)時(shí)會(huì)發(fā)生什么,行句柄和數(shù)據(jù)源索引之間的關(guān)鍵區(qū)別之一是,組行的行句柄是負(fù)整數(shù)。顯然沒(méi)有用于組行的數(shù)據(jù)源索引,因?yàn)樗鼈儾淮嬖谟跀?shù)據(jù)源中,因此組行中顯示的值是組中第一個(gè)數(shù)據(jù)行的索引。還有一件值得注意的事情是,數(shù)據(jù)行的句柄總是非負(fù)整數(shù)。
使用行句柄遍歷行
如果您想遍歷網(wǎng)格控件內(nèi)存中的所有行,可以簡(jiǎn)單地枚舉從0到View的屬性的行句柄。
看一下Clear Name按鈕的Click事件處理程序,它正是這樣做的,以便為所有當(dāng)前加載的行清除Name列中的值。處理程序代碼被封裝到和方法調(diào)用中,以避免對(duì)視圖進(jìn)行多次更新。它從等于0的行句柄開(kāi)始,然后枚舉到屬性值為止的所有整數(shù),循環(huán)體調(diào)用 方法來(lái)清除Name列中的值。
C#
private void barButtonClearName_ItemClick(object sender, ItemClickEventArgs e) { gridView1.BeginUpdate(); int rowHandle = 0; while (rowHandle < gridView1.DataRowCount) { gridView1.SetRowCellValue(rowHandle, colName, string.Empty); rowHandle++; } gridView1.EndUpdate(); }
運(yùn)行應(yīng)用程序。首先過(guò)濾記錄,只顯示Audis,單擊該按鈕并查看清除的名稱。現(xiàn)在刪除過(guò)濾并通過(guò)Make對(duì)數(shù)據(jù)進(jìn)行分組,您將看到Audis組中的Name列已被清除,但其他品牌仍然擁有該數(shù)據(jù)。
因此只有匹配篩選條件的行才會(huì)加載到內(nèi)存中,如果現(xiàn)在按Clear Name 按鈕,更改將影響展開(kāi)或折疊組中的所有行。
行句柄和可見(jiàn)索引之間的差異
分組視圖還揭示了行句柄和可見(jiàn)索引之間的重要區(qū)別。首先,可見(jiàn)索引仍然從0開(kāi)始,并且該值隨著每個(gè)可見(jiàn)行(無(wú)論是組行還是數(shù)據(jù)行)而增加。其次,您會(huì)注意到行句柄已經(jīng)分配給加載到內(nèi)存中的所有行,包括折疊組中的行,對(duì)組行的展開(kāi)和折疊操作不會(huì)影響行句柄。另一方面,可視索引將在每次展開(kāi)狀態(tài)更改時(shí)重新計(jì)算,以考慮已變?yōu)榭梢?jiàn)或隱藏的行。
使用可見(jiàn)索引
為了說(shuō)明可見(jiàn)索引的用法,實(shí)現(xiàn)一個(gè)導(dǎo)航到視圖中下一個(gè)可見(jiàn)行的按鈕——這是按下DOWN鍵的替代方法。處理程序首先使用 方法確定焦點(diǎn)行的可見(jiàn)索引,該方法將行句柄作為參數(shù)。接下來(lái)代碼增加獲得的可見(jiàn)索引,最后使用 方法將其轉(zhuǎn)換回行句柄值,并使用這個(gè)新獲得的句柄設(shè)置焦點(diǎn)。
C#
private void barButtonNextRow_ItemClick(object sender, ItemClickEventArgs e) { int visibleIndex = gridView1.GetVisibleIndex(gridView1.FocusedRowHandle); visibleIndex++; gridView1.FocusedRowHandle = gridView1.GetVisibleRowHandle(visibleIndex); }
本教程中最后值得一提的一點(diǎn)是,為特殊類型的行(如New Item Row)分配預(yù)定義的行句柄值。
要查看如何使用這些預(yù)定義值,請(qǐng)?zhí)幚硎录>W(wǎng)格控件具有指定它們的靜態(tài)字段,這還包括值,如果無(wú)法獲得行句柄,則由某些方法返回該值。在代碼中,檢查當(dāng)前行是否為New Item Row,如果是,則顯示確認(rèn)消息框。
C#
private void gridView1_BeforeLeaveRow(object sender, DevExpress.XtraGrid.Views.Base.RowAllowEventArgs e) { if (e.RowHandle == DevExpress.XtraGrid.GridControl.NewItemRowHandle) { DialogResult result = MessageBox.Show("Are you done editing the new record?", "Confirmation", MessageBoxButtons.YesNo); e.Allow = (result == System.Windows.Forms.DialogResult.Yes); } }
運(yùn)行應(yīng)用程序,聚焦新建項(xiàng)目行,然后嘗試將焦點(diǎn)更改回其中一個(gè)數(shù)據(jù)行。如果單擊“No”,焦點(diǎn)將保持不變。
網(wǎng)格視圖提供了允許您將行標(biāo)識(shí)符相互轉(zhuǎn)換的方法,要了解其工作原理,請(qǐng)分析在此應(yīng)用程序中顯示行索引信息的處理程序。
有三列,一列顯示可見(jiàn)索引,另一行顯示句柄,第三列顯示數(shù)據(jù)源索引,該代碼首先使用作為參數(shù)傳遞的行句柄獲取數(shù)據(jù)源索引。然后使用行句柄確定可見(jiàn)索引,之后所有的值都顯示在相應(yīng)的列中。
C#
using DevExpress.XtraGrid.Views.Grid; //... private void GridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) { GridView view = sender as GridView; int dataSourceRowIndex = view.GetDataSourceRowIndex(e.RowHandle); int visibleIndex = view.GetVisibleIndex(e.RowHandle); if(e.Column.FieldName == "gridColumnRowHandle") e.DisplayText = e.RowHandle.ToString(); if(e.Column.FieldName == "gridColumnVisibleIndex") e.DisplayText = visibleIndex.ToString(); if(e.Column.FieldName == "gridColumnListSourceIndex") e.DisplayText = dataSourceRowIndex.ToString(); }
更多產(chǎn)品資訊及授權(quán),歡迎來(lái)電咨詢:023-68661681
慧都科技是專注軟件工程、智能制造、石油工程三大行業(yè)的數(shù)字化解決方案服務(wù)商。在軟件工程領(lǐng)域,我們提供開(kāi)發(fā)控件、研發(fā)管理、代碼開(kāi)發(fā)、部署運(yùn)維等軟件開(kāi)發(fā)全鏈路所需的產(chǎn)品,提供正版授權(quán)采購(gòu)、技術(shù)選型、個(gè)性化維保等服務(wù),幫助客戶實(shí)現(xiàn)技術(shù)合規(guī)、降本增效與風(fēng)險(xiǎn)可控。
慧都科技是DevExpress的中國(guó)區(qū)的合作伙伴,DevExpress作為用戶界面領(lǐng)域的優(yōu)秀產(chǎn)品,幫助企業(yè)高效構(gòu)建權(quán)限管理、數(shù)據(jù)可視化(如網(wǎng)格/圖表/儀表盤)、跨平臺(tái)系統(tǒng)(WinForms/ASP.NET/.NET MAUI)及行業(yè)定制解決方案,加速開(kāi)發(fā)并強(qiáng)化交互體驗(yàn)。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)