翻譯|使用教程|編輯:龔雪|2024-10-08 13:45:34.810|閱讀 111 次
概述:本文主要為大家介紹如何用DevExpress WinForms中熱門的數據網格組件完成數據輸入的驗證,歡迎下載最新版體驗~
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
本教程介紹DevExpress WinForm的Data Grid控件是如何利用網格組件完成數據輸入驗證的。
P.S:DevExpress WinForms擁有180+組件和UI庫,能為Windows Forms平臺創建具有影響力的業務解決方案。DevExpress WinForms能完美構建流暢、美觀且易于使用的應用程序,無論是Office風格的界面,還是分析處理大批量的業務數據,它都能輕松勝任!
獲取DevExpress WinForms v24.1正式版下載
DevExpress技術交流群10:532598169 歡迎一起進群討論
默認情況下,DevExpress WinForm網格控件啟用了內置數據類型驗證。如果在綁定到數字數據字段的列中輸入字符串值,然后按ENTER鍵或嘗試將焦點從單元格移開,則網格將驗證數據輸入并引發錯誤,因為字符串無法轉換為數字值。將鼠標懸停在錯誤圖標上,可以看到相同的錯誤消息。
更正輸入的值或放棄更改來繼續使用網格控件,要取消更改,請按ESCAPE。
要手動指定默認錯誤消息,請執行以下操作。
1. 處理視圖的事件。
2. 在事件處理程序中,使用屬性檢查焦點列。
3. 嘗試將事件的參數轉換為所需的類型。
4. 如果該值不能轉換,將參數設置為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."; } } }
運行應用程序,看看驗證機制現在是如何顯示自定義的錯誤消息的。
要驗證數據,請執行以下操作:
1. 處理相同的事件。
2. 若要在特定列中只允許正數值,請檢查轉換值是否大于0。
3. 如果不是,將 參數設置為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."; } } }
如果運行該應用程序,將看到在嘗試向單元格中輸入零時出現指定的錯誤消息。
要自定義顯示錯誤的方式,請執行以下操作。
1. 處理視圖的事件。
2. 在事件處理程序中,顯示帶有屬性值的消息框。
3. 要禁用默認的錯誤圖標和工具提示,請將參數設置為。
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網格控件現在使用消息框通知您有關錯誤的信息。
如果一個值的有效性取決于同一行中的其他值,則可以通過處理事件啟用行驗證。
例如,確保一列中的值大于另一列中的值。
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."; } }
運行應用程序,輸入無效值并嘗試將焦點切換到另一行。此時將進行行驗證,并調用帶有指定錯誤文本的默認錯誤對話框。
單擊Yes,然后將鼠標懸停在錯誤圖標上,來查看為各個列指定的錯誤消息。
要在驗證行時禁用默認對話框窗口,請處理事件并將參數設置為。
C#
private void gridView1_InvalidRowException(object sender, DevExpress.XtraGrid.Views.Base.InvalidRowExceptionEventArgs e) { e.ExceptionMode = ExceptionMode.NoAction; }
現在當輸入不正確的值時,消息將被抑制,但是您仍然可以在數據單元格和行指示符區域中看到相同的錯誤圖標。
更多產品資訊及授權,歡迎“”!
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網