2013-10-06 13 views
6

używam DevexpressGridView aby wyświetlić wszystkie TOPIC (id,title,content)Jak uzyskać wartość pola wybranego wiersza Devexpress GridView?

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

Mam grid_SelectionChanged zdarzenie:

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

...

Wydaje gv.SelectedRow metoda nie istnieje w DevGridview.

Zgodnie z zaleceniem, próbowałem z metodą FocusedRowIndex, ale naprawdę nie znam właściwej składni, aby uzyskać wartość wybranego wiersza.

Pomoc!

Odpowiedz

8

Zmiana wyboru różni się od zmiany ustawionego wiersza. Zobacz dokumentację dla Selection dla różnicy między tymi dwoma.

Możesz użyć gv.GetSelectedFieldValues, aby uzyskać wybrane wiersze.

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

Należy obsłużyć zdarzenia FocusedRowChanged jeśli jesteś zainteresowany aktywnym rzędzie.

Można użyć wartości FocusedRowIndex do indeksu wierszy gv.DataSource, na przykład:

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

lub użyć var id = gv.GetRowValues(gv.FocusedRowIndex, "id").

+0

gv.Selection oddać pozycję wiersza, czy to prawda? Co mogę zrobić z pozycją rzędu? Mam na myśli, co muszę zrobić, żeby uzyskać tę wartość? Czy możesz mi powiedzieć trochę szczegółów? Trudno jest mi pracować z DevexpressGridView –

+0

Istnieje wiele dziwactw podczas pracy z siatkami DevExpress, jednym z nich jest to, że trochę trudno jest uzyskać wartości komórek w siatce, głównie dlatego, że 'DataSource' isn Zdecydowanie napisano. Zaktualizowałem swoją odpowiedź, podając więcej szczegółów. – Alex

1

Można również uzyskać wybrany wiersz danych jako

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

byłby to powrót DataRow

Pamiętaj, to jest, gdy Używam DevExpress gridControl w WinForms

0

Jeśli chcesz uzyskać tylko identyfikator wartości pola można użyć tego obiektu, jeśli posiadasz obiekt, którego używasz stosowanie tej metody wartość

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

i dostać to

int ID = selectedPersonel.ID; 
Powiązane problemy