2017-10-09 4 views
0

この問題は、次の行の値に基づいてセルの値を設定していました。vb.netを使用しているdatagridviewの次の行のデータに基づいて現在の行の値を設定する方法

たとえば、

Remarks Reference 
    A   50 
    A   25 
    B   5 
       -25 

ケース1:

列「リファレンス」の次のCell.Rowの値が正の数の列「備考」でcell.rowの値である場合は「A」です。

CASE 2:

列「リファレンス」の次のCell.Rowの値が負の数であれば、カラム「解説」でcell.rowの値が「B」です。

私はすでにこのコードを試しましたが、私は必要な結果を得ることができません。

Dim Bal As Decimal = 0 
    For Each r As DataGridViewRow In dgvSTSub.Rows 
     Bal = Bal + r.Cells(3).Value - r.Cells(1).Value 
     r.Cells(3).Value = Bal 

     If Bal > 0 Then 
      r.Cells(2).Value = Bal 
     ElseIf Bal < 0 Then 
      r.Cells(2).Value = r.Cells(3).Value 
     End If 
    Next 

私にコードを教えてください。

+0

あなたが発言を設定されている場合、これはあなたにそれを達成するためにどのようにいくつかのアイデアを取得する必要がありますが示されていないとして

(あなたがすでにあることを知っ願っています) 'foreach'の代わりに' for'ループを使います。また、インデックスではなく、列名に基づいてセル値にアクセスします。あなたの質問を理解するごとに、次の行の値に基づいて現在の行を操作したいと思いますか? –

+0

私はこの同じ質問を別の場所で取り上げましたが、それは無視されたようです。これも無視しないでください。 'For Each'ループの代わりに' For'ループを使用してください。この場合、アクセスする行と隣接する行は、ループカウンタをインクリメントまたはデクリメントする単純な問題です。あるいは、現在の行の 'Index'プロパティを取得してそれと同じです。最初のオプションは、2番目の行から始めることも、2番目の最後の行から終了することもできます。 – jmcilhinney

+0

あなたの提案を無視して申し訳ありませんが、私はちょうどvb.netで新しいです。実際に私は私にそれを行う方法がわからないので、いくつかのコードを共有する以前に返信しました。私は論理を理解できません。私の謝罪の仲間。助けてくれてありがとう。 – Diaval

答えて

1

まず、ForEachの代わりにForループを使用することをお勧めします。これは、行の反復がより便利で簡単になるためです。

第二例のために、.Cellsにアクセスしながら、ColumnNames代わりのIndexを使用します。代わりに.Cells(1).Cells("reference")参照がある列名)を使用します。将来、列の名前を変更しない限り、列の順序を変更しても、メソッドや関数が妨げられることはないので、これをお勧めします。
注:ここのColumnNameは、DataGridView UIに表示されるヘッダーテキストではありません。

For index = 0 To DataGridView1.RowCount - 1 
    Dim nxt = 1 
    If (index + 1 < DataGridView1.RowCount) Then 
     nxt = DataGridView1.Rows(index + 1).Cells("reference").Value 
    End If 
    If (nxt) > 0 Then 
     DataGridView1.Rows(index).Cells("remark").Value = "A" 
    Else 
     DataGridView1.Rows(index).Cells("remark").Value = "B" 
    End If 
Next 

ダミー出力:

Remark Reference 

A  13 
B  21 
A  -33 
B  41 
A  -54 
+0

Ow yes!それは私が話していることです.. !!!!!あなたは角度の仲間です。あなたは...そのような単純な...ありがとうございます。 – Diaval

関連する問題