如何:在資料列變更期間驗證資料
資料驗證是指對輸入到應用程式資料中的值進行檢查的一個程序; 傳送更新至基礎資料存放區前,先查看這些值,是很好的做法。 這是因為它會降低應用程式和資料存放區之間的可能來回往返次數。
注意事項 |
---|
[DataSet 設計工具] 會建立部分類別,其中可以將驗證邏輯加入到資料集中。設計工具產生的資料集將不會刪除或變更任何在部分類別中的程式碼。 |
當資料列的值變更時,您可藉由回應 RowChanging 事件來驗證資料。 引發這個事件時,它會傳遞事件引數 (e.Row),其中包含目前資料列中每個資料行的建議值。 根據 e.Row 中每個資料行的內容,您可以:
不執行任何動作,接受建議值。
從資料列變更事件處理常式中,設定資料行錯誤 (SetColumnError),即可拒絕建議值。
選擇性地使用 ErrorProvider 控制項,顯示錯誤訊息給使用者。 如需詳細資訊,請參閱ErrorProvider 元件 (Windows Form)。
您也可以使用 ColumnChanging 事件,在個別資料行變更時執行驗證。 如需詳細資訊,請參閱如何:在資料行變更期間驗證資料。
在 RowChanging 事件中驗證資料
您可以編寫程式碼,確認您要驗證的每個資料行所包含的資料都符合應用程式需求。 如果無法接受建議值,請設定資料行,指出它包含錯誤。 下列範例在 Quantity 資料行等於或小於 0 時,會設定資料行錯誤。 資料列變更事件處理常式應該類似下列範例。
若要在資料列變更時驗證資料 (Visual Basic)
在 [DataSet 設計工具] 中開啟資料集。 如需詳細資訊,請參閱如何:在 DataSet 設計工具中開啟資料集。
按兩下您要驗證的資料表之標題列。 這個動作會自動在資料集的部分類別檔案中建立 DataTable 的 RowChanging 事件處理常式。
提示
按兩下資料表名稱左邊,建立資料列變更事件處理常式。如果您按兩下資料表名稱,就可以編輯資料表名稱。
Private Sub Order_DetailsDataTable_Order_DetailsRowChanging( ByVal sender As System.Object, ByVal e As Order_DetailsRowChangeEvent ) Handles Me.Order_DetailsRowChanging If CType(e.Row.Quantity, Short) <= 0 Then e.Row.SetColumnError("Quantity", "Quantity must be greater than 0") Else e.Row.SetColumnError("Quantity", "") End If End Sub
若要在資料列變更時驗證資料 (C#)
在 [DataSet 設計工具] 中開啟資料集。 如需詳細資訊,請參閱如何:在 DataSet 設計工具中開啟資料集。
按兩下您要驗證的資料表之標題列。 這個動作會建立 DataTable 的部分類別檔案。
注意事項 [DataSet 設計工具] 不會自動建立 RowChanging 事件的事件處理常式。您必須建立一個方法以處理 RowChanging 事件,並執行程式碼以連結資料表的初始化方法中的事件。
將下列程式碼複製到部分類別中:
public override void EndInit() { base.EndInit(); Order_DetailsRowChanging += TestRowChangeEvent; } public void TestRowChangeEvent(object sender, Order_DetailsRowChangeEvent e) { if ((short)e.Row.Quantity <= 0) { e.Row.SetColumnError("Quantity", "Quantity must be greater than 0"); } else { e.Row.SetColumnError("Quantity", ""); } }