webentwicklung-frage-antwort-db.com.de

Wie erhalte ich die ausgewählten Zeilenwerte von DevExpress XtraGrid?

Betrachten Sie das folgende Bild

enter image description here

Ich erhalte die ausgewählten Zeilenwerte in den drei in der Abbildung gezeigten Textfeldern, wenn ich mit folgendem Code auf eine Zelle klicke.

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

Meine Frage ist: Wie mache ich dasselbe in DevExpress XtraGrid Control?

16
kashif

Sie können dies auf verschiedene Arten tun. Sie können Datenbindung verwenden (typisch initialisiert nach InitializeComponent ();).

textBox1.DataBindings.Add(new Binding("Text", yourBindingSource, 
                    "TableName.ColumnName", true, DataSourceUpdateMode.OnPropertyChanged));

oder verwenden Sie ein DataLayoutControl (wenn Sie Textbox für die Bearbeitung verwenden möchten, empfehle ich Ihnen dringend, etwas Zeit mit der Verwendung dieser Komponente zu verbringen.

oder in FocusedRowChanged durch Zuweisen einer der folgenden Methoden:

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

Hier ist der Weg, den ich verfolgt habe,

int[] selRows = ((GridView)gridControl1.MainView).GetSelectedRows();
DataRowView selRow = (DataRowView)(((GridView)gridControl1.MainView).GetRow(selRows[0]));
txtName.Text = selRow["name"].ToString();

Sie können auch ausgewählte Zeilen mit dem Array selRows durchlaufen. Hier beschreibt der Code, wie Daten nur aus der ersten ausgewählten Zeile abgerufen werden. Sie können diese Codezeilen einfügen, um auf das Ereignis des Rasters zu klicken.

26
mili

Ich habe die Lösung wie folgt gefunden:

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

Welches ihrer Gitter verwenden Sie? XtraGrid oder AspXGrid? Hier ist ein Stück aus einer meiner App mit 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);
}

Mein Raster hat eine Liste von Kontaktobjekten, die daran gebunden sind. Jedes Mal, wenn eine Zeile angeklickt wird, lade ich die ausgewählte Zeile in _selectedContact. Hoffe das hilft. Sie finden viele Informationen zur Verwendung ihrer Steuerelemente buy auf deren Support- und Dokumentationsseiten.

3
Saif Khan

Für VB.Net

CType(GridControl1.MainView, GridView).GetFocusedRow()

Für c #

((GridView)gridControl1.MainView).GetFocusedRow();

beispiel binden Sie Daten von linq so verwenden

Dim selRow As CUSTOMER = CType(GridControl1.MainView, GridView).GetFocusedRow()
1
Rasmey

Sie müssen lediglich die GetFocusedRowCellValue - Methode des gridView-Steuerelements verwenden und in das RowClick-Ereignis einfügen.

Zum Beispiel:

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