2016-04-15 7 views
1

あなたは私にこのことを起こす方法を手伝ってもらえますか?アイテムを追加する行の検証が必要です。私はdatagridview1、dgvTxtItemCode、dgvTxtItemDescという名前のデータグリッドビューを持っています。私は、同じ項目コードまたはアイテムdescを入力するたびに、すでに追加されているというメッセージボックスが表示されるという検証を追加したい。Datagridview vb.netのRowValidation

だからここに私のコードは、私は本当にあなたの助けを必要があるので、それは私の絶頂のためだ、

Function isAlreadyAdded(itemCode As String, itemName As String) As Boolean 
    Dim bFLAG As Boolean 
    For Each r As DataGridViewRow In DataGridView1.Rows 
     If r.Cells(0).Value = r.Index = itemCode AndAlso r.Index = itemName Then 
      bFLAG = True 
      Exit For 
     End If 
    Next 
    Return bFLAG 
End Function 



    Private Sub AddDelivery_RowValidating(sender As Object, e As DataGridViewCellCancelEventArgs) Handles DataGridView1.RowValidating 
    With DataGridView1 
     If isAlreadyAdded(.Rows(e.RowIndex).Cells(dgvTxtItemDesc.Name).Value, e.RowIndex) Then 
      MessageBox.Show("Item was already added!", "Duplicate", MessageBoxButtons.OK, MessageBoxIcon.Warning) 
      e.Cancel = True 
      Exit Sub 
     End If 
    End With 
End Sub 

です。君たちありがとう。

+0

私のitemCodeである 'GNC-SAK-062'のように、ブール値に変換することはできません – noob

+0

なぜ 'CellValidating'でそれをしませんか? – jmcilhinney

+0

.rowsの代わりに、それは.cellsになりますか? – noob

答えて

0

rowvalidatingの代わりにcellvalidatingイベントを処理してください。このように:

Private Sub AddDelivery_RowValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles DgOperacionsArticles.CellValidating 
    With DataGridView1 
     If isAlreadyAdded(.Rows(e.RowIndex).Cells(dgvTxtItemDesc.Name).Value, e.RowIndex)=True Then 
      MessageBox.Show("Item was already added!", "Duplicate", MessageBoxButtons.OK, MessageBoxIcon.Warning) 
      e.Cancel = True 
      Exit Sub 
     End If 
    End With 
End Sub 

そしてまた、これは動作することを確認するために、デフォルトでFalseにブール値をdefiní:

Dim bFLAG As Boolean = False 

ホープ、このことができます!

+0

それは働いていません。それは私のアイテムコードのような何かがダブルに変換することはできません – noob

+0

私はあなたがこの行に問題があると思う: "r.Cells(0).Value = r.Index = itemCode AndAlso r.Index = itemName Then 1つのオブジェクト、1つの整数と1つの文字列の間のコンパイル...これは失敗するはずです。 –

関連する問題