Domanda

è possibile visualizzare un DataRow da un DataTable che ha DataRowState.Deleted?

Scenario: L'utente può modificare alcune informazioni di ricerca che sono presentate nella griglia. Ora può cancellare, modificare o inserire più voci e infine memorizzarle tutte cambia con un clic sul database (supponendo che non vi sia violazione della chiave primaria o qualche altro problema).

Ora voglio colorare le diverse righe in base al loro stato di modifica, ma il le righe eliminate scompaiono immediatamente.

Hai qualche idea o un altro approccio per risolvere questo problema?

È stato utile?

Soluzione

Modifica: ho capito che il Grid che stai usando non è DataGridView . Per chiunque voglia fare lo stesso con DataGridView , può fare quanto segue:

  1. Crea un DataView :

    DataView myDataView = 
          new DataView(myDataTable, 
                       String.Empty,       // add a filter if you need one
                       "SortByColumn",
                       DataViewRowState.OriginalRows | DataViewRowState.Deleted); 
    
    myDataGridView.DataSource = myDataView;
    
  2. Gestisci eventi UserAddedRow , UserDeletedRow e CellValueChanged :

    private void myDataGridView_UserAddedRow
                (object sender, DataGridViewRowEventArgs e)
    {
        e.Row.DefaultCellStyle.BackColor = ColorTranslator.FromHtml("#CCFF99");
    }
    
    private void myDataGridView_UserDeletedRow
                (object sender, DataGridViewRowEventArgs e)
    {
        e.Row.DefaultCellStyle.BackColor = ColorTranslator.FromHtml("#FFCC99");
    }
    
    private void myDataGridView_CellValueChanged
                (object sender, DataGridViewCellEventArgs e)
    {
       myDataGridView[e.ColumnIndex, e.RowIndex].DefaultCellStyle.BackColor 
                                              = ColorTranslator.FromHtml("#FFFF99");
    }
    
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top