2016-12-06 43 views
0

私はVS 2005版を使用しています。私はwinformデスクトップアプリケーションを開発しています。私はスタッフD(商品番号5)、になって「商品番号」欄を削除した場合datagridviewから行を削除し、特定の列をリセットする方法(vb.net 2005)

original datagrid before delete

:前に削除

オリジナルデータグリッド:のは、私は以下のようなテーブルで、結合していないDataGridViewのを持っているとしましょうそれに応じてそれ自体をリセットする。予想される出力は次のようになります。削除行の後

after delete row

「商品番号」の欄は自動採番ではない、それは(私は、ユーザーとして、増分割り当てられただけで数が新しい行に追加します新しいもの)。私はrowremovedイベントで次のコードを使用しようとしましたが、期待される出力を達成できませんでした。助けてください。ありがとう。

答えて

0

セルにレコードインデックスが表示されているだけの場合、セルに値を割り当てる必要はありません。e.Value = e.RowIndex + 1CellFormattingイベントに設定するだけで十分です。

あなたのコメントに基づいて、これらのセルにも値が必要なようです。だから、DataGridViewRowsRemovedRowsAddedイベントを処理し、行番号とセル値を更新する必要があります。

Public Sub RefreshRowNumbers(g As DataGridView) 
    For Each r As DataGridViewRow In g.Rows 
     r.Cells(1).Value = r.Index + 1 
    Next 
End Sub 

Private Sub DataGridView1_RowsRemoved(sender As Object, _ 
    e As DataGridViewRowsRemovedEventArgs) Handles DataGridView1.RowsRemoved 
    RefreshRowNumbers(DirectCast(sender, DataGridView)) 
End Sub 

Private Sub DataGridView1_RowsAdded(sender As Object, _ 
    e As DataGridViewRowsAddedEventArgs) Handles DataGridView1.RowsAdded 
    RefreshRowNumbers(DirectCast(sender, DataGridView)) 
End Sub 
+0

私はセルに値を割り当てるために持っている理由のような理由があります。 DataGridは、ユーザーがすでに追加した内容を表示するためのものです。 –

+0

OK、値が必要なので、 'RowsRemoved'と' RowsAdded'イベントを扱い、行番号をリフレッシュする必要があります。なんらかの理由で最後の行(新しい行)を除外したい場合は、 'row.IsNewRow = True'の場合は単に行を除外する代わりにforループを使用することができます。 –

+0

あなたが答えについて質問がある場合、または解決策を適用する際に問題がある場合は教えてください。 –

関連する問題