2 votes

Dans le DataGridView, la propriété ReadOnly de la colonne devient false lors de l'ajout d'une nouvelle ligne et true lors de la mise à jour (c#.net).

J'ai mis la propriété readonly de 2 colonnes de données à true.

    List.Columns[0].ReadOnly = true;
    List.Columns[1].ReadOnly = true;

Mais je veux seulement qu'ils soient en lecture seule lorsque l'utilisateur essaie de mettre à jour, l'utilisateur peut ajouter de nouvelles lignes à dataGridView donc je veux transformer la propriété readonly en false lorsqu'il essaie d'ajouter une nouvelle ligne. J'ai essayé de faire cela sur l'événement CellDoubleClick de la grille de données mais cela ne fera rien car il est trop tard pour que le beginedit soit appelé.

if(e.RowIndex == GridView.Rows.Count-1)
                GridView.Rows[e.RowIndex].Cells[1].ReadOnly = GridView.Rows[e.RowIndex].Cells[0].ReadOnly = false;
            else
                GridView.Rows[e.RowIndex].Cells[1].ReadOnly = GridView.Rows[e.RowIndex].Cells[0].ReadOnly = true;

Des idées ?

6voto

pratap k Points 9133

Vous devez utiliser l'édition cellbegin pour que la propriété readonly de la cellule soit vraie .

   private  void dataGridView1_CellBeginEdit(object sender,DataGridViewCellCancelEventArgs e)
   {
       if (dataGridView1.Columns[e.ColumnIndex].Name == "ColName0")
       {
           // you can check whether the read only property of that cell is false or not

       }
   }

J'espère que cela vous aidera...

2voto

David Hall Points 17450

On dirait que ce que vous voulez faire, c'est rendre toutes les lignes de la grille en lecture seule, à moins qu'il ne s'agisse de la nouvelle ligne, ce qui signifie que les lignes créées ne peuvent pas être modifiées. Si c'est le cas, vous pouvez définir la ligne en lecture seule pendant l'événement DataBindingComplete, comme suit :

dataGridView1.DataBindingComplete += new DataGridViewBindingCompleteEventHandler(dataGridView1_DataBindingComplete);

void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    foreach (DataGridViewRow item in dataGridView1.Rows)
    {
        if (!item.IsNewRow)
            item.ReadOnly = true; 
    }
}

La partie importante est la vérification pour voir si la ligne est la nouvelle ligne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X