2013-06-19 68 views
0

好吧,這是我的目標。我對具有20列的DataRow對象調用SetColumnError(),但無論使用哪個ColumnIndex它在列0上設置錯誤文本。MSDN documentation清楚地表明錯誤文本應該設置在ColumnIndex提供的列上。我試圖設置錯誤文本列1和2(我通常使用常量時,這樣做,我剛纔在這個示例代碼中使用整數爲簡單起見)。爲什麼錯誤文本出現在第0列,以及我應該如何讓文本顯示在第1列和第2列?我沒有收到IndexOutOfRangeException。DataRow.SetColumnError(Int32,String)忽略Int32值並始終使用零

這是我遇到的代碼。

Public Sub ValidateRows() 

    For Each dgvRow As DataGridViewRow In Me.DataGridView1.Rows 
     If dgvRow.DataBoundItem IsNot Nothing Then 
      Dim rowView As DataRowView = dgvRow.DataBoundItem 
      Dim rowData As MyDataSet.DocumentRow = rowView.Row 
      rowData.ClearErrors() 
      If rowData.Revision = rowData.Revision_old Then 
       rowData.SetColumnError(1, "You must change the revision") 
      End If 
      If rowData.InternalRevision = rowData.InternalRevision_old Then 
       rowData.SetColumnError(2, "You must change the internal revision") 
      End If 
     End If 
    Next 

End Sub 
+0

我開始認爲它與來自處理DataGridView.CellFormatting事件的基類的干擾有關。 –

回答

0

我不確定,但我認爲該列的編號必須是「DataColumn」類型。

+0

這是一種可能的過載。有三種重載:SetColumnError(DataColumn,String); SetColumnError(Int32,String); SetColumnError(String,String)。我正在使用Int32重載。 –

+0

你確定你試圖訪問的行有多個列嗎?也許你可以調試程序並檢查。 – almanegra

+0

我試着引用一個19以上的列索引,並按預期拋出IndexOutOfRangeException異常。 –

相關問題