0

グリッドのどの行がエラー、更新、または挿入されているかをユーザーに表示したいと思います。

以前はグリッドのすべての行と列が手元で管理されていましたが、すべてsqlAdapter(dataTables)で作成/入力されるように変更しています。

だから...私は行にエラーがあるか挿入されているかどうかを確認できます...しかし、DataRowを介して、例:

usrGrdPieces.getGrid.DataSource.DataSource.GetChanges()

ただし、これはグリッドがバインドされているdataSetのみを提供し、グリッドの実際の行は提供しません。そして、これらの行の詳細をどのように表示できるかわかりません。

以前は、行のcoulbが存在する状態ごとに画像を含む列が追加されていましたが、bindingSourceで生成されたグリッドでも実行できますか?

または、セルまたは行を緑/赤でハイライト表示することができれば、私も幸せです...

助けてくれる人に感謝します!

4

1 に答える 1

1

行の DataBoundItem を介してデータテーブルにデータバインドされているグリッド内の行の DataRow にアクセスできます。

たとえば、追加された緑色の行と、DataRow オブジェクトの DataRowState プロパティを使用して変更されたオレンジ色の行を強調表示したいとします。背景色の代わりに列に画像を表示する場合も同じことができます。エラー状態はデータ行に格納されるものではないため、その意味によっては、追加のチェックを行う必要があります。この例では、50 文字以下の「名前」という列があるとします。それ以上の場合は、行を赤で強調表示します。通常は、セル/行に「ErrorText」プロパティを使用してエラーがあることを示しますが、この例の色に固執します。

CellFormatting イベントを処理します (C# に慣れているため、これを C# で記述しましたが、プロパティ/概念は VB でも同じです)。

dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    DataGridView grid = (DataGridView) sender;
    DataRowView currentRowView = (DataRowView) grid.Rows[e.RowIndex].DataBoundItem;
    DataRow currentRow = (DataRow)currentRowView.Row;
    string name = currentRow["Name"].ToString();
    if (name.Length > 50)
    {
        grid.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;
    }
    else if (currentRow.RowState == DataRowState.Added)
    {
        grid.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Green;
    }
    else if (currentRow.RowState == DataRowState.Modified)
    {
        grid.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Orange;
    }
}
于 2012-08-20T21:46:46.977 に答える