HOW TO:在資料行變更期間驗證資料
資料驗證是指對輸入到應用程式資料中之值進行檢查的程序; 先檢查這些值之後,再將更新傳送至基礎資料存放區是一個很好的作法,因為這樣可以減少應用程式與資料存放區之間的可能來回往返次數。
注意事項 |
---|
[DataSet 設計工具] 會建立部分類別,其中可以將驗證邏輯加入到資料集中。 設計工具產生的資料集將不會刪除或變更任何在部分類別中的程式碼。 如需詳細資訊,請參閱 HOW TO:擴充資料集的功能。 |
當資料行的值變更時,您可藉由回應 ColumnChanging 事件來驗證資料。 這個事件引發時,它會傳遞事件引數 (ProposedValue),其中包含目前資料行的建議值。 根據 e.ProposedValue 的內容,您可以:
不執行任何動作,接受建議值。
從資料行變更事件處理常式中,設定資料行錯誤 (SetColumnError),拒絕建議值。
選擇性地使用 ErrorProvider 控制項,顯示錯誤訊息給使用者。 如需詳細資訊,請參閱 ErrorProvider 元件 (Windows Form)。
您也可以在 RowChanging 事件期間執行驗證。 如需詳細資訊,請參閱 HOW TO:在資料列變更期間驗證資料。
若要在資料行的值變更時驗證資料
在 [DataSet 設計工具] 中開啟資料集。 如需詳細資訊,請參閱 HOW TO:在 DataSet 設計工具中開啟資料集。
按兩下您要驗證的資料行。 這個動作會建立 DataTable 的 ColumnChanging 事件處理常式。
注意事項 [DataSet 設計工具] 不會自動建立此 C# 事件的事件處理常式。 處理事件所需的程式碼如下。
加入程式碼,驗證 e.ProposedValue 包含的資料是否符合應用程式需求。 如果無法接受建議值,請設定資料行,指出它包含錯誤。
下列程式碼範例會在 Quantity 資料行等於或小於 0 時,設定資料行錯誤。 資料行變更事件處理常式如下:
'Visual Basic Private Sub Order_DetailsDataTable_ColumnChanging(ByVal sender As System.Object, ByVal e As System.Data.DataColumnChangeEventArgs) _ Handles Me.ColumnChanging If (e.Column.ColumnName = Me.QuantityColumn.ColumnName) Then If CType(e.ProposedValue, Short) <= 0 Then e.Row.SetColumnError(e.Column, "Quantity must be greater than 0") Else e.Row.SetColumnError(e.Column, "") End If End If End Sub // C# // Add this code to the DataTable // partial class. public override void EndInit() { base.EndInit(); ColumnChanging += SampleColumnChangingEvent; } public void SampleColumnChangingEvent(object sender, System.Data.DataColumnChangeEventArgs e) { if (e.Column.ColumnName == QuantityColumn.ColumnName) { if ((short)e.ProposedValue <= 0) { e.Row.SetColumnError("Quantity", "Quantity must be greater than 0"); } else { e.Row.SetColumnError("Quantity", ""); } } }
請參閱
工作
HOW TO:驗證 Windows Form DataGridView 控制項中的資料
HOW TO:使用 Windows Form ErrorProvider 元件顯示表單驗證的錯誤圖示