Wenn Sie sicher sein können, dass sich die Reihenfolge der Elemente in Ihrer Datenquelle nicht geändert hat, können Sie die CommandArgument-Eigenschaft von CommandEventArgs verwenden.
Eine robustere Methode besteht jedoch darin, die DataKeys/SelectedDataKey-Eigenschaften von GridView zu verwenden. Die einzige Einschränkung ist, dass Ihr Befehl vom Typ "Select" sein muss (RowCommand hat standardmäßig keinen Zugriff auf den DataKey).
Angenommen, Sie haben eine Eindeutigkeit in den Entitäten Ihrer Liste, können Sie einen oder mehrere Schlüsseleigenschaftsnamen in der DataKeys-Eigenschaft des GridViews festlegen. Wenn das ausgewählte Element in der GridView festgelegt ist, können Sie Ihre Schlüsselwerte abrufen und das Element in Ihrer gebundenen Liste suchen. Diese Methode löst das Problem aus, dass die Ordinalposition in der GridView nicht der Ordinalposition Ihres Elements in der Datenquelle entspricht.
Beispiel:
<asp:GridView ID="GridView1" runat="server" AutoGenerateSelectButton="True"
DataKeyNames="Name" onrowcommand="GridView1_RowCommand1"
onselectedindexchanged="GridView1_SelectedIndexChanged">
</asp:GridView>
Dann wird der Code-Behind (oder inline) für die Seite wäre so etwas wie:
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
// Value is the Name property of the selected row's bound object.
string foo = GridView1.SelectedDataKey.Value as string;
}
Eine andere Wahl in der Rows-Auflistung Spelunking der gehen würde GridView, das Spaltenwerte einzeln abruft, indem Kontrollwerte abgerufen werden. Dies wird jedoch nicht empfohlen, es sei denn, Sie müssen.
Hoffe, das hilft.