web-dev-qa-db-fra.com

Comment obtenir les valeurs de rangées sélectionnées de DevExpress XtraGrid?

Considérez l'image suivante

enter image description here

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 ??

16
kashif

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();
24
Stig

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.

26
mili

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();            
}

enter image description here

9
kashif

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.

3
Saif Khan

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()
1
Rasmey

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());            
}
0
Gerson Azabache