web-dev-qa-db-fra.com

Datagridview sélection complète de la ligne mais obtient une valeur de cellule unique

J'ai un datagridview qui est une ligne complète sélectionnez . Comment pourrais-je récupérer les données d'une seule cellule, quelle que soit la cellule sur laquelle la ligne a été cliquée, car elle met en surbrillance la ligne entière.

37
Tsukasa

Vous pouvez faire comme ça ...... 

     private void datagridview1_SelectionChanged(object sender, EventArgs e)
     {
         if (datagridview1.SelectedCells.Count > 0)
         {
             int selectedrowindex = datagridview1.SelectedCells[0].RowIndex;

             DataGridViewRow selectedRow = datagridview1.Rows[selectedrowindex];  

              string a = Convert.ToString(selectedRow.Cells["you have to mention you cell  corresponding column name"].Value);           


         }
     }
73
Enigma State

Si vous souhaitez obtenir le contenu de la cellule sélectionnée; vous avez besoin de l'index de la ligne et de la cellule.

int rowindex = dataGridView1.CurrentCell.RowIndex;
int columnindex = dataGridView1.CurrentCell.ColumnIndex; 

dataGridView1.Rows[rowindex].Cells[columnindex].Value.ToString();
18
Özer Özcan

Dans l'événement CellClick, vous pouvez écrire le code suivant

string value =
      datagridviewID.Rows[e.RowIndex].Cells[e.ColumnIndex].FormattedValue.ToString();

En utilisant le code ci-dessus, vous obtiendrez une valeur pour la cellule que vous avez cliquée. Si vous souhaitez obtenir une valeur de colonne particulière dans la ligne sur laquelle vous avez cliqué, remplacez simplement e.ColumnIndex par l'index de colonne souhaité.

7
Null Pointer

vous pouvez également obtenir les valeurs de la cellule car la sélection actuelle est référencée sous CurrentRow

dataGridView1.CurrentRow.Cell[indexorname].FormattedValue

Ici, vous pouvez utiliser un nom d'index ou de colonne et obtenir la valeur.

3
V4Vendetta

Je veux juste souligner, vous pouvez utiliser .selectedindex pour le rendre un peu plus propre

string value = gridview.Rows[gridview.SelectedIndex].Cells[1].Text.ToString();
2
Joe Stellato
string value = dataGridVeiw1.CurrentRow.Cells[1].Value.ToString();
2
Xhami

cela me donne la valeur de texte de la cellule exacte en vue de la grille de données 

private void dataGridView_SelectionChanged(object sender, EventArgs e)
    {
        label1.Text = dataGridView.CurrentRow.Cells[#].Value.ToString();
    }

vous pouvez le voir dans l'étiquette et changer # avec l'index de la cellule exacte que vous voulez

1

Il suffit d'utiliser: dataGridView1.CurrentCell.Value.ToString()

        private void dataGridView1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            MessageBox.Show(dataGridView1.CurrentCell.Value.ToString());
        }

ou

 // dataGrid1.Rows[yourRowIndex ].Cells[yourColumnIndex].Value.ToString()

 //Example1:yourRowIndex=dataGridView1.CurrentRow.Index (from selectedRow );
 dataGrid1.Rows[dataGridView1.CurrentRow.Index].Cells[2].Value.ToString()

 //Example2:yourRowIndex=3,yourColumnIndex=2 (select by programmatically )
  dataGrid1.Rows[3].Cells[2].Value.ToString()
1
Ahosan Karim Asik

Je sais, je suis un peu en retard pour la réponse. Mais j'aimerais contribuer.

DataGridView.SelectedRows[0].Cells[0].Value

Ce code est simple comme bonjour

1
rizwan ijaz
1
Polynomial

Pour obtenir une valeur de cellule basée sur la sélection de lignes entières:

if (dataGridView1.SelectedRows.Count > 0)
      {
         foreach (DataGridViewRow row in dataGridView1.Rows)
           {
               TextBox1.Text = row.Cells["ColumnName"].Value.ToString();
           }
      }
else
      {
        MessageBox.Show("Please select item!");
      }
     }
0
Ashraf Abusada

Pour ceux qui n'ont pas pu déclencher l'événement click, ils peuvent utiliser le code suivant 

public Form1()
            {
                InitializeComponent();
                this.dataGridView1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick);
            }
0
Elesmoth

Le code le plus simple est DataGridView1.SelectedCells(column_index).Value

Par exemple, pour la première cellule sélectionnée:

DataGridView1.SelectedCells(0).Value
0
ilkay kurt

Utilisez Cell Click car les autres méthodes mentionnées se déclencheront lors de la liaison de données, ce qui est inutile si vous souhaitez que la valeur sélectionnée, puis le formulaire se ferme.

private void dgvProducts_CellClick(object sender, DataGridViewCellEventArgs e)
{
    if (dgvProducts.SelectedCells.Count > 0) // Checking to see if any cell is selected
    {
        int mSelectedRowIndex = dgvProducts.SelectedCells[0].RowIndex;

        DataGridViewRow mSelectedRow = dgvProducts.Rows[mSelectedRowIndex];

        string mCatagoryName = Convert.ToString(mSelectedRow.Cells[1].Value);

        SomeOtherMethod(mProductName); // Passing the name to where ever you need it

        this.close();
    }
}
0
ravenx30