Wie wird die ausgewählte Zeile in ASP.NET GridView basierend auf DataKey festgelegt?

8

Ich möchte etwas ähnlich dem folgenden Pseudocode:

%Vor%

Ich habe Intellisense erforscht, aber ich habe keinen offensichtlichen Weg gefunden, dies zu tun. Ich würde SelectedIndex auf -1 setzen, wenn DataKey nicht gefunden wurde.

    
Larsenal 08.12.2008, 18:50
quelle

9 Antworten

9

Ich bin mit

gelandet %Vor%     
Larsenal 08.12.2008, 18:59
quelle
5

Haben Sie einen Linq-Ansatz in Erwägung gezogen?

Verwendung:

%Vor%

Code:

%Vor%     
Mark Good 10.12.2009 16:25
quelle
4

Das funktioniert und es ist schön und kurz:

%Vor%     
tkaragiris 14.08.2013 05:21
quelle
3

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%     
Phil 07.01.2010 11:17
quelle
3

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.

    
nick5454 09.04.2012 15:44
quelle
2

Versuchen Sie diesen Linq-Ansatz:

%Vor%     
Buchi 14.07.2011 07:54
quelle
2
%Vor%     
Johan 07.10.2009 21:43
quelle
1

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.

    
NightOwl888 14.12.2010 13:53
quelle
0

Wenn Sie bereits die Instanz von GridViewRow haben, dann tun Sie das:

%Vor%     
Seva 18.12.2014 12:05
quelle

Tags und Links