Considérez l'image suivante
J'obtiens les valeurs de ligne sélectionnées dans les trois zones de texte indiquées dans la figure lorsque je clique sur une cellule à l'aide du code suivant.
void dataGridView1_CellClick_1(object sender, DataGridViewCellEventArgs e) {
TBGRNo.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
TBSName.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
TBFName.Text = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
}
Ma question est: comment vais-je faire la même chose dans le contrôle DevExpress XtraGrid ??
Vous pouvez le faire de différentes manières. Vous pouvez utiliser la liaison de données (typiquement initialisée après InitializeComponent ();)
textBox1.DataBindings.Add(new Binding("Text", yourBindingSource,
"TableName.ColumnName", true, DataSourceUpdateMode.OnPropertyChanged));
ou utilisez un DataLayoutControl (si vous allez utiliser textbox pour l'édition, je vous recommande vivement de passer un peu de temps pour apprendre à utiliser ce composant.
ou dans FocusedRowChanged en affectant l'une des méthodes suivantes:
textBox1.Text = gridView1.GetDataRow(e.FocusedRowHandle)["Name"].ToString();
textBox1.Text = gridView1.GetFocusedDataRow()["Name"].ToString();
textBox1.Text = (gridView1.GetFocusedRow() as DataRowView).Row["Name"].ToString();
textBox1.Text = gridView1.GetFocusedRowCellValue("Name").ToString();
Voici le chemin que j'ai suivi,
int[] selRows = ((GridView)gridControl1.MainView).GetSelectedRows();
DataRowView selRow = (DataRowView)(((GridView)gridControl1.MainView).GetRow(selRows[0]));
txtName.Text = selRow["name"].ToString();
Vous pouvez également parcourir les lignes sélectionnées à l'aide du tableau selRows. Ici, le code explique comment obtenir des données uniquement à partir de la première ligne sélectionnée. Vous pouvez insérer ces lignes de code pour cliquer sur l'événement de la grille.
J'ai trouvé la solution comme suit:
private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
{
TBGRNo.Text = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "GRNo").ToString();
TBSName.Text = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "SName").ToString();
TBFName.Text = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "FName").ToString();
}
Laquelle de leurs grilles utilisez-vous? XtraGrid ou AspXGrid? Voici un extrait de l'une de mes applications utilisant XtraGrid.
private void grdContactsView_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
{
_selectedContact = GetSelectedRow((DevExpress.XtraGrid.Views.Grid.GridView)sender);
}
private Contact GetSelectedRow(DevExpress.XtraGrid.Views.Grid.GridView view)
{
return (Contact)view.GetRow(view.FocusedRowHandle);
}
Ma grille contient une liste d'objets Contact liés. Chaque fois qu'une ligne est cliquée, je charge la ligne sélectionnée dans _selectedContact. J'espère que cela t'aides. Vous trouverez de nombreuses informations sur l’utilisation de leurs contrôles pour visiter leurs sites d’assistance et de documentation.
Pour VB.Net
CType(GridControl1.MainView, GridView).GetFocusedRow()
Pour C #
((GridView)gridControl1.MainView).GetFocusedRow();
exemple lier les données par linq afin d'utiliser
Dim selRow As CUSTOMER = CType(GridControl1.MainView, GridView).GetFocusedRow()
Tout ce que vous avez à faire est d'utiliser la méthode GetFocusedRowCellValue du contrôle gridView et de l'insérer dans l'événement RowClick.
Par exemple:
private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
{
if (this.gvCodigoNombres.GetFocusedRowCellValue("EMP_dni") == null)
return;
MessageBox.Show(""+this.gvCodigoNombres.GetFocusedRowCellValue("EMP_dni").ToString());
}