web-dev-qa-db-fra.com

Comment obtenir la valeur de champ de la ligne sélectionnée Devexpress GridView?

J'utilise un DevexpressGridView pour afficher tous les TOPIC (id,title,content)

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

J'ai un événement 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();
    }

...

Il semble que la méthode gv.SelectedRow n'existe pas dans DevGridview.

Comme recommandé, j'ai essayé avec la méthode FocusedRowIndex, mais je ne connais vraiment pas la bonne syntaxe pour obtenir la valeur de la ligne sélectionnée.

Aidez-moi!!!

6
vyclarks

J'ai trouvé ma réponse après une longue recherche sur Google: http://www.devexpress.com/Support/Center/Question/Details/Q347704

Utilisez la méthode ASPxGridView.GetSelectedFieldValues ​​ pour obtenir les valeurs de ligne sélectionnées sur le serveur.

1
vyclarks

Changer la sélection est différent de changer la ligne focalisée. Voir la documentation de Selection pour connaître la différence entre les deux.

Vous pouvez utiliser gv.GetSelectedFieldValues pour obtenir les lignes sélectionnées.

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

Vous devez gérer l'événement FocusedRowChanged si la ligne ciblée vous intéresse.

Vous pouvez utiliser la valeur FocusedRowIndex pour indexer les lignes de gv.DataSource, par exemple:

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

ou vous pouvez utiliser var id = gv.GetRowValues(gv.FocusedRowIndex, "id") .

8
Alex

Vous pouvez également obtenir la ligne de données sélectionnée comme

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

Cela renverrait DataRow 

Veuillez noter que c'est lorsque j'utilise Devexpress gridControl dans WinForms

1
Softec

Si vous souhaitez obtenir uniquement la valeur du champ ID, vous pouvez utiliser cette option.

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

si vous avez un objet, vous pouvez l'utiliser

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

et obtenir la méthode de valeur est 

int ID = selectedPersonel.ID;
0
hakan baştürk