Ihre obige Methode durchsucht nur die aktuelle Seite der GridView, wenn Paging aktiviert ist. Um das gesamte GridView zu durchsuchen, müssen Sie in seine DataSource schauen und diese verwenden, um die entsprechenden Werte zu erhalten.
In meinem Fall musste ich den Benutzern eine schnelle Möglichkeit geben, nach einem bestimmten Client zu suchen, also habe ich eine AJAX-fähige Combo-Box hinzugefügt und OnSelectedIndexChanged, um die entsprechende GridView-Zeile zu finden und auszuwählen:
%Vor%Ok, die meisten sind falsch. Phil ist der Einzige, der funktioniert. Die Antwort funktioniert nicht. Das Problem mit Phils Antwort ist, dass es an eine SQL DataTable in asp.net gebunden ist, die niemand verwendet. Nun, einige tun es, aber wenn Sie beginnen, Design-Patterns zu verwenden, die fallen gelassen werden.
Meine Beispieldetails durchlaufen Zeile für Zeile und wechseln den Seitenindex und die Neubindung. Ich konnte die tatsächliche DataSource-Eigenschaft nicht durchsuchen, da sie an ein LinqDataSource-Steuerelement gebunden ist und ich nicht zu den tatsächlichen Daten gelangen kann. Und das Durchsuchen der DataSource würde wahrscheinlich sowieso nicht funktionieren, weil Sie suchen, sortieren, usw., um die Daten zu ändern, und den tatsächlichen Zeilenindex zu greifen, ist nicht der Index des Gitters (oder des anderen Steuerelements).
Ich habe eine versteckte asp: HiddenControl verwendet, um den Wert zu behalten, weil eine jQuery-Funktion das Postback tatsächlich ausführt. grdLocations ist die Gridview
%Vor%Dies wird jede Seite in der Rasteransicht durchlaufen und den richtigen Datenschlüssel auswählen.
Nun fügen Sie hinzu, wenn Sie möchten, dass der einfachste Weg, eine Seite basierend auf einer Zeile zu finden, diese Mathematik in dieser Beispielkonsolenanwendung verwendet. Dies hält es wirklich einfach
%Vor%Hoffe das hilft jemandem.
Fügen Sie etwas ähnliches in Ihr Ereignis GridView_RowDataBound () ein:
%Vor%In diesem Beispiel binden wir das GridView an eine Sammlung von benutzerdefinierten Objekten vom Typ Catalog.Product, und der DataKey trägt den Namen Bvin - Sie müssen den Datentyp und den Schlüsselnamen abhängig davon anpassen, an was Sie binden.
Beachten Sie, dass dieses Ereignis bereits einmal pro Zeile ausgeführt wird, sodass keine Schleife erforderlich ist. Es sollte jedoch darauf geachtet werden, dass Dinge wie der Datenzugriff nicht mehrfach vorkommen.