2009-01-08 5 views
9

Ive keine Probleme mit Javascript zum Lesen der Zeilen einer Telerik radgrid-Komponente im verwenden, aber ich kann scheinen trotzdem zu finden auf die Zeilendaten Server-Seite zugreifen, wenn ein Postback auftritt. Ich habe ewig nach einer Lösung gesucht, aber kein Glück. Alle Hinweise würden sehr geschätzt werden.Zugreifen auf Row-Daten in Telerik RadGrid (Server-Seite)

Tony

+0

Ist das Gitter editierbare? Oder versuchen Sie nur, die Daten in das Raster zu bekommen? –

Antwort

16

Sie könnten am DataKeyValues Eigenschaft des OwnerTableView Objekt suchen möchten, die Ihnen eine Sammlung von Werten zugreifen lassen, die die Felder in einer bestimmten Zeile darstellen. Ich benutze es während des EditCommand-Ereignishandlers, da ein Benutzer meiner Site zu einer Bearbeitungsseite geleitet wird, wenn er auf den Link klickt, um eine Zeile im Raster zu bearbeiten, und ich bestimmte Informationen über die angegebene Zeile in der Abfrage weiterleiten muss Zeichenfolge.

Wenn sich herausstellt, was Sie benötigen, müssen Sie auch definieren, welche Felder über diese Eigenschaft verfügbar gemacht werden sollen. Sehen Sie sich dazu die Eigenschaft MasterTableView.DataKeyNames im Eigenschaftenfenster für das Raster an. Sie geben im Grunde eine durch Kommas getrennte Liste von Feldnamen an.

+0

Hallo Chris, danke eine Mühle dafür. Das funktioniert nicht für Objekte, die an das Gitter gebunden sind. Weißt du, wie man Textboxen, die einem Gitter hinzugefügt wurden, die nicht gebunden sind, verwendet, um irgendwelche zeilenbezogenen Eingaben einzufangen, die ein Benutzer für diese Spalte eingegeben hat? Danke, Tony – TonyNeallon

+0

Bis jetzt habe ich nur gebundene Spalten behandelt, aber überprüfe http : //www.telerik.com/help/aspnet/grid/gridreferencecontrolsinroweditform.html und http://www.telerik.com/help/aspnet/grid/grdusinggetitemsgetcolumnmethods.html, diese könnten hilfreich sein. –

3

Die serverseitige ist der einfache Teil:

GridItemCollection gridRows = TestGrid.Items; 
foreach (GridDataItem data in gridRows) 
{ 
    ItemClass obj = (ItemClass)data.DataItem; 
} 

Es ist die Client-Seite Teil, den ich weiß es nicht! [

+0

thx papi. Gute Antwort – neverwinter

5

verwende ich das Telerik Gitter aus einiger Zeit und fand diese Artikel in ihren docs, wie von ausgewählten Zeilen-Server oder Client-Seite zum Abrufen von Daten:

Server-side Client-side

Hoffe, dass Sie sie finden hilfreich.

Dick

1
private Int32 GetID() 
{ 
    foreach (Telerik.Web.UI.GridDataItem dataItem in radGrid.MasterTableView.Items) 
    { 
     if (dataItem.Selected == true) 
     { 
      Int32 ID = (Int32)dataItem.GetDataKeyValue("ID"); 
      return ID; 
     } 
    } 
    throw new ArgumentNullException("Id Not found"); 
} 
0
private Int32 GetID() 
{ 
    foreach (Telerik.Web.UI.GridDataItem dataItem in radGrid.MasterTableView.Items) 
    { 
     if (dataItem.Selected == true) 
     { 
      // Int32 ID = (Int32)dataItem.GetDataKeyValue("ID"); 
Int32 ID =Convert.ToInt32(dataItem.GetDataKeyValue("ID")); 
      return ID; 
     } 
    } 

} 
//this will work 
0

Das ist derjenige, der für mich arbeitet und verwendet die RadGrid.SelectedItems Sammlung.

0

Wenn Sie Ihre Steuerelemente in Markup oder Seiteninitialisierung für dynamische Steuerelemente ordnungsgemäß erstellt haben, wird das RadGrid ordnungsgemäß wiederherstellen.

Sie können auf die Anfangswerte zugreifen, die aus der Datenquelle geladen wurden, wie in diesem Beispiel unten, vorausgesetzt, Sie haben die betreffende Tabellenansicht angewiesen, die Spalten in den Datenschlüsseln zu halten.

protected T GetInitialGridData<T>(GridDataItem item, string uniqueColumnName) { 
    item.ThrowIfNull("item"); 
    uniqueColumnName.ThrowIfNullOrEmpty("uniqueColumnName"); 

    return (T)item.OwnerTableView.DataKeyValues(gridItem.ItemIndex)(columnName); 
} 

Wenn Sie eine dynamische benutzerdefinierte Vorlage Spalte, und müssen auf beliebige Werte erhalten, die jetzt in ihren Staaten sein kann, können Sie verwenden:

protected string GetCustomTextBoxValue(GridDataItem item, string controlID) { 
    item.ThrowIfNull("item"); 
    controlID.ThrowIfNullOrTrimmedEmpty("controlID"); 

    return ((TextBox)item.FindControl(controlID)).Text; 
}