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.
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);
}
}
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();
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é.
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.
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();
string value = dataGridVeiw1.CurrentRow.Cells[1].Value.ToString();
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
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()
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
DataGridView.CurrentRow.Cells[n]
Voir: http://msdn.Microsoft.com/en-us/library/system.windows.forms.datagridview.currentrow.aspx
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!");
}
}
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);
}
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
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();
}
}