2013-10-06 38 views
6

Io uso un DevexpressGridView per visualizzare tutti gli eventi TOPIC (id,title,content)Come ottenere il valore campo della riga selezionata Devexpress GridView?

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

ho grid_SelectionChanged:

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

...

sembra gv.SelectedRow metodo non esiste in DevGridview.

Come consigliato, ho provato con il metodo FocusedRowIndex, ma davvero non conosco la sintassi corretta per ottenere il valore della riga selezionata.

Aiuto !!!

risposta

8

La modifica della selezione è diversa dalla modifica della riga messa a fuoco. Vedere la documentazione per Selection per la differenza tra i due.

È possibile utilizzare gv.GetSelectedFieldValues per ottenere le righe selezionate.

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

Si dovrebbe gestire l'evento FocusedRowChanged se siete interessati nella riga focalizzato.

È possibile utilizzare il valore FocusedRowIndex per indicizzare i file di gv.DataSource, ad esempio:

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

oppure è possibile utilizzare var id = gv.GetRowValues(gv.FocusedRowIndex, "id").

+0

gv.Selection restituire la posizione di riga, è giusto? Che cosa posso fare con la posizione di fila? Voglio dire, devo fare cosa per ottenere il valore? Puoi dirmi qualche dettaglio? È così difficile per me lavorare con DevexpressGridView –

+0

Ci sono un sacco di stranezze quando si lavora con griglie DevExpress, una delle quali è che è un po 'complicato ottenere i valori delle celle nella griglia, principalmente perché il 'DataSource' non è 'fortemente battuto a macchina. Ho aggiornato la mia risposta con maggiori dettagli. – Alex

1

Si può anche essere selezionato riga di dati come

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

Questo sarebbe tornato DataRow

Si prega di notare che questo è quando sto usando DevExpress GridControl in WinForms

0

Se si desidera ottenere solo ID campo valore è possibile utilizzare questo

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

se si dispone di un oggetto si c un uso questo metodo valore

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

e ottenere è

int ID = selectedPersonel.ID; 
Problemi correlati