翻譯|使用教程|編輯:龔雪|2024-10-08 13:45:34.810|閱讀 111 次
概述:本文主要為大家介紹如何用DevExpress WinForms中熱門的數(shù)據(jù)網(wǎng)格組件完成數(shù)據(jù)輸入的驗證,歡迎下載最新版體驗~
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
本教程介紹DevExpress WinForm的Data Grid控件是如何利用網(wǎng)格組件完成數(shù)據(jù)輸入驗證的。
P.S:DevExpress WinForms擁有180+組件和UI庫,能為Windows Forms平臺創(chuàng)建具有影響力的業(yè)務(wù)解決方案。DevExpress WinForms能完美構(gòu)建流暢、美觀且易于使用的應(yīng)用程序,無論是Office風(fēng)格的界面,還是分析處理大批量的業(yè)務(wù)數(shù)據(jù),它都能輕松勝任!
獲取DevExpress WinForms v24.1正式版下載
DevExpress技術(shù)交流群10:532598169 歡迎一起進群討論
默認情況下,DevExpress WinForm網(wǎng)格控件啟用了內(nèi)置數(shù)據(jù)類型驗證。如果在綁定到數(shù)字?jǐn)?shù)據(jù)字段的列中輸入字符串值,然后按ENTER鍵或嘗試將焦點從單元格移開,則網(wǎng)格將驗證數(shù)據(jù)輸入并引發(fā)錯誤,因為字符串無法轉(zhuǎn)換為數(shù)字值。將鼠標(biāo)懸停在錯誤圖標(biāo)上,可以看到相同的錯誤消息。
更正輸入的值或放棄更改來繼續(xù)使用網(wǎng)格控件,要取消更改,請按ESCAPE。
要手動指定默認錯誤消息,請執(zhí)行以下操作。
1. 處理視圖的事件。
2. 在事件處理程序中,使用屬性檢查焦點列。
3. 嘗試將事件的參數(shù)轉(zhuǎn)換為所需的類型。
4. 如果該值不能轉(zhuǎn)換,將參數(shù)設(shè)置為false,并指定自定義的屬性值。
C#
private void gridView1_ValidatingEditor(object sender, BaseContainerValidateEditorEventArgs e) { GridView view = sender as GridView; if (view.FocusedColumn.FieldName == "UnitPrice") { double price = 0; if (!Double.TryParse(e.Value as String, out price)) { e.Valid = false; e.ErrorText = "Only numeric values are accepted."; } } }
運行應(yīng)用程序,看看驗證機制現(xiàn)在是如何顯示自定義的錯誤消息的。
要驗證數(shù)據(jù),請執(zhí)行以下操作:
1. 處理相同的事件。
2. 若要在特定列中只允許正數(shù)值,請檢查轉(zhuǎn)換值是否大于0。
3. 如果不是,將 參數(shù)設(shè)置為false并指定您的自定義錯誤消息。
C#
private void gridView1_ValidatingEditor(object sender, BaseContainerValidateEditorEventArgs e) { GridView view = sender as GridView; if (view.FocusedColumn.FieldName == "UnitPrice") { double price = 0; if (!Double.TryParse(e.Value as String, out price)) { e.Valid = false; e.ErrorText = "Only numeric values are accepted."; } else if (price <= 0) { e.Valid = false; e.ErrorText = "The unit price must be positive."; } } }
如果運行該應(yīng)用程序,將看到在嘗試向單元格中輸入零時出現(xiàn)指定的錯誤消息。
要自定義顯示錯誤的方式,請執(zhí)行以下操作。
1. 處理視圖的事件。
2. 在事件處理程序中,顯示帶有屬性值的消息框。
3. 要禁用默認的錯誤圖標(biāo)和工具提示,請將參數(shù)設(shè)置為。
C#
private void gridView1_InvalidValueException(object sender, InvalidValueExceptionEventArgs e) { MessageBox.Show(this, e.ErrorText, "Invalid Value", MessageBoxButtons.OK, MessageBoxIcon.Error); e.ExceptionMode = ExceptionMode.NoAction; }
DevExpress WinForms網(wǎng)格控件現(xiàn)在使用消息框通知您有關(guān)錯誤的信息。
如果一個值的有效性取決于同一行中的其他值,則可以通過處理事件啟用行驗證。
例如,確保一列中的值大于另一列中的值。
C#
private void gridView1_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e) { GridView view = sender as GridView; GridColumn colUnitsInStock = view.Columns["UnitsInStock"]; GridColumn colUnitsOnOrder = view.Columns["UnitsOnOrder"]; double unitsInStock = Convert.ToDouble(view.GetRowCellValue(view.FocusedRowHandle, colUnitsInStock)); double unitsOnOrder = Convert.ToDouble(view.GetRowCellValue(view.FocusedRowHandle, colUnitsOnOrder)); if (unitsInStock < unitsOnOrder) { view.SetColumnError(colUnitsInStock, "The Units On Order value should be less than this value."); view.SetColumnError(colUnitsOnOrder, "This value should be less than the Units In Stock value."); view.SetColumnError(null, "Invalid data"); e.Valid = false; e.ErrorText = "'Units On Order' and 'Units In Stock' values are not consistent."; } }
運行應(yīng)用程序,輸入無效值并嘗試將焦點切換到另一行。此時將進行行驗證,并調(diào)用帶有指定錯誤文本的默認錯誤對話框。
單擊Yes,然后將鼠標(biāo)懸停在錯誤圖標(biāo)上,來查看為各個列指定的錯誤消息。
要在驗證行時禁用默認對話框窗口,請?zhí)幚硎录?shù)設(shè)置為。
C#
private void gridView1_InvalidRowException(object sender, DevExpress.XtraGrid.Views.Base.InvalidRowExceptionEventArgs e) { e.ExceptionMode = ExceptionMode.NoAction; }
現(xiàn)在當(dāng)輸入不正確的值時,消息將被抑制,但是您仍然可以在數(shù)據(jù)單元格和行指示符區(qū)域中看到相同的錯誤圖標(biāo)。
更多產(chǎn)品資訊及授權(quán),歡迎“”!
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)