2011-09-14 13 views
7

Posso ottenere l'indice selezionato di gridview ma voglio ottenere i dati effettivi che si trovano all'interno della griglia. Voglio selezionare una riga nella griglia e poter accedere al valore dei dati effettivi della colonna "Client Id". La griglia funziona correttamente e sono in grado di accedere all'evento SelectedIndexChanged. Ho quindi provato senza fortuna a trovare un modo per ottenere le informazioni visualizzate nella griglia. Qualsiasi aiuto sarebbe molto apprezzato.Telerik ottiene l'ID selezionato (Ottieni dati dall'elemento selezionato Radgrid)

Anche in questo caso, ho bisogno di accedere a tutti i dati visualizzati nella griglia del codebehind.

+0

http://stackoverflow.com/questions/33822075/cannot-identify-selected -page-in-telerik-grid-i-need-selected-page-to-be-underl Aiutami in questo – Sachin

+0

http://stackoverflow.com/questions/33822075/cannot-identify-selected-page-in-telerik -grid-i-need-selected-page-to-be-underl – Sachin

risposta

14

Questo è il significato dei tasti di dati. Basta designare le colonne a cui si desidera accedere come chiavi dati, come nell'esempio mostrato di seguito.

<telerik:RadGrid ID="RadGrid1" runat="server" ...> 
    <MasterTableView DataKeyNames="Column1, Column2, Column3" ...> 
     ... 
    </MasterTableView> 
</telerik> 

Una volta che le chiavi di dati sono stati assegnati nel codice, è possibile accedervi in ​​code-behind per riga, o utilizzando la proprietà SelectedValues.

if (RadGrid1.SelectedItems.Count > 0) 
{ 
    //access a string value 
    string column1 = RadGrid1.SelectedValues["Column1"].ToString(); 

    //access an integer value 
    int column2 = (int)RadGrid1.SelectedValues["Column2"]; 
} 
+0

@Jonathan O: Per aggiungere alla risposta di James: Se è necessario "avere accesso a tutti i dati visualizzati nella griglia" per una determinata riga selezionata ; avresti bisogno di avere ogni colonna elencata come DataKey nel markup. Oppure ... basta elencare l'ID e interrogare l'archivio dati solo per quel particolare oggetto. – Icarus

+0

quando si esegue questa operazione, cosa c'è nella colonna variabile1? come ottiene i dati in quella colonna? Grazie mille per l'aiuto. – joncodo

+0

Quindi ho il DataKeyNames = "ClientID, Gender, First Name" nel mio markup e nel mio codebehind ... var column = rgSearchResults.SelectedValues ​​["ClientID"]. ToString; ?? Questo non funziona per me. L'errore dice "oggetto ref non impostato su un'istanza di obj" – joncodo

1

Si potrebbe fare così:

 ` foreach (GridDataItem item in RadGrid1.MasterTableView.Items){ 
       if (item.selected == true){ 
       string mydata = item["ColumnName"].Text; 
        } 
        } 
     ` 

Mi raccomando di leggere la documentazione su questo sito http://www.telerik.com/help/aspnet/grid/grdaccessingcellsandrows.html; sicuramente ti aiuterà molto con i componenti telerik.

+1

-1 Questo non è un buon modo per trovare l'oggetto selezionato o ottenere i valori selezionati. Dovresti usare le chiavi dei dati per ottenere i valori, e puoi usare 'RadGrid1.SelectedItems' per ottenere gli oggetti selezionati. Ti suggerisco di leggere qualche altra documentazione. –

0

Si consiglia l'uso di DataKeys come James Johnson. Non è possibile accedere alla proprietà DataItem dell'evento GridDataItem nell'evento SelectedIndexChanged. Sarà nullo. Secondo Telerik documentation "L'oggetto DataItem è disponibile solo quando la griglia si lega ai dati."

Quando DateItem è disponibile, come nel caso ItemCreated, si potrebbe fare un cast al tipo di dati originale MyType:

private void RadGrid_ItemCreated(object sender, Telerik.Web.UI.GridItemEventArgs e) 
{ 
    if ((e.Item is GridDataItem)) { 
     GridDataItem gridDataItem = (GridDataItem)e.Item; 
     MyType dataItem = (MyType)gridDataItem.DataItem; 
    } 
} 
+1

Penso che manchi la barca. OP vuole sapere come ottenere i dati dall'elemento 'selected' nella griglia. Ancora una volta, questo è ciò che le chiavi di dati sono per. –

+0

Sì, hai ragione. Ho corretto la mia risposta di conseguenza. – mika

Problemi correlati