2013-10-06 11 views
6

verwende ich eine DevexpressGridView alle anzuzeigen TOPIC (id,title,content)Wie erhält man den Feldwert der ausgewählten Zeile? GridView?

<dx:ASPxGridView ID="gv" runat="server" 
OnSelectionChanged="gv_SelectionChanged" > 

I grid_SelectionChanged Veranstaltung haben:

protected void gv_SelectionChanged(object sender, EventArgs e) 
    { 

     int id= selected row...???; //how can I get the value of selected row 
     string sql = "select * from TOPIC where idTOPIC="+id; 
     DataTable topic = l.EXECUTEQUERYSQL(sql); 
     TextBox1.Text = topic.Rows[0][1].ToString(); 
    } 

...

Es scheint gv.SelectedRow Methode in DevGridview ist nicht vorhanden.

Wie empfohlen, habe ich mit FocusedRowIndex Methode versucht, aber ich weiß wirklich nicht die richtige Syntax, um den Wert der ausgewählten Zeile zu erhalten.

Hilfe !!!

Antwort

8

Das Ändern der Auswahl unterscheidet sich von dem Ändern der fokussierten Zeile. Siehe die Dokumentation für Selection für den Unterschied zwischen den beiden.

Sie können gv.GetSelectedFieldValues verwenden, um die ausgewählten Zeilen zu erhalten.

var ids = gv.GetSelectedFieldValues("id"); 
foreach(var id in ids) 
    DoSomethingWithObject(id); 

Sie sollten die FocusedRowChanged Ereignis behandeln, wenn Sie in der fokussierten Zeile interessiert sind.

Sie können über den FocusedRowIndex Wert indizieren die Zeilen von gv.DataSource, zum Beispiel:

DataTable ds = (DataTable)gv.DataSource; 
var id = ds.Rows[gv.FocusedRowIndex]["id"]; 

oder Sie können var id = gv.GetRowValues(gv.FocusedRowIndex, "id") verwenden.

+0

gv.Selection die Zeilenposition zurück geben, ist das richtig? Was kann ich mit der Position der Reihe machen? Ich meine, ich muss was tun, um den Wert zu bekommen? Kannst du mir ein Detail erzählen? Es ist so schwer für mich, mit DevexpressGridView zu arbeiten. –

+0

Es gibt eine Menge Macken bei der Arbeit mit DevExpress-Grids, eine davon ist, dass es ein wenig schwierig ist, die Werte der Zellen im Grid zu bekommen, hauptsächlich weil die 'DataSource' nicht ist nicht stark typisiert. Ich habe meine Antwort mit mehr Details aktualisiert. – Alex

1

Sie können auch Datenreihe als

int rowHandle = gridView1.FocusedRowHandle; 
    if (rowHandle != DevExpress.XtraGrid.GridControl.InvalidRowHandle) 
    { 
    return this.gridView1.GetDataRow(rowHandle); 
    } 

Diese DataRow

Bitte beachten Sie, das ist, wenn ich DevExpress Gridcontrol bin mit in WinForms

0

Wenn Sie nur ID erhalten möchten zurückkehren würde ausgewählt bekommen Feldwert, den Sie verwenden können

int id = Convert.ToInt32(gv.GetRowValues(gv.FocusedRowIndex, "ID").ToString()); 

Wenn Sie ein Objekt haben Sie c eine Verwendung dieser

Personels selectedPersonel = gv.GetRow(gv.FocusedRowIndex) as Personels; 

und erhalten Wertmethode ist

int ID = selectedPersonel.ID;