2011-01-12 6 views
0

Ich habe ein Raster, in dem ich einige Datensätze in jeder Zeile anzeigen. Hier ist, wie es ist: alt textAbrufen der ID aus der ersten Spalte von GridView

Nun, mein Problem ist, dass, wenn ich die Ansicht Taste drücken, mag ich die ID aus der ersten Spalte in einer Sitzungsvariablen holen, so dass ich die gleiche ID auf der nächsten Seite angezeigt werden kann .

Für die ItemTemplate von EditButton ich diesen Code verwende:

<ItemTemplate> 
    <asp:LinkButton ID="EditBtn" CssClass="btn green" CommandName="edit" ToolTip="Edit" Text="Edit" runat="server" /> 
</ItemTemplate> 
+1

Auf welchen Wert die AutoGenerateColumn Eigenschaft festgelegt? Wie sieht Ihre Datenquelle aus? – citronas

+0

Die IDs in der ersten Spalte werden nicht automatisch generiert, sondern aus der Datenbank abgerufen. Also, sie können zufällig sein, nicht notwendigerweise in der Reihenfolge, die ich oben geschrieben habe. Hier ist der Link zum Code der GirdView HTML-Quelle. http://pastebin.com/2Zj2DhJU – Cipher

Antwort

3

Sie versuchen, es als Befehl Argument übergeben konnte:

<ItemTemplate> 
    <asp:LinkButton 
     ID="EditBtn" 
     CssClass="btn green" 
     CommandName="edit" 
     CommandArgument='<%# Eval("FirstColumnId") %>' 
     OnCommand="EditCommand" 
     ToolTip="Edit" 
     Text="Edit" 
     runat="server" /> 
</ItemTemplate> 

und in der Code-behind:

protected void EditCommand(object sender, GridViewCommandEventArgs e) 
{ 
    var id = e.CommandArgument; 
    // TODO: do something with the id 
} 
1

Versuchen Sie dies. Es sind keine Änderungen an Ihrem aspx

erforderlich
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    Session["UserID"] = ((Label)GridView1.Rows[e.NewEditIndex].FindControl("lb1")).Text.Trim(); 
} 

Andere Methode (Verwendung von DataKeyNames - Preferred)

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    Session["UserID"] = GridView1.DataKeys[e.NewEditIndex].Value.ToString(); 
} 
Verwandte Themen