2016-03-31 9 views
0

Ich habe eine GridView, die mehrere Datensätze anzeigt. Wenn Sie auf den dritten Datensatz klicken, wird unten eine Detailansicht angezeigt, in der Sie den Datensatz bearbeiten können. Wenn ich Änderungen am Datensatz vornimmt und speichere, wird das GridView aktualisiert und aktualisiert. Jetzt ist mein bearbeiteter Datensatz die fünfte Zeile. Die dritte Zeile ist jedoch immer noch ausgewählt, und die DetailsView zeigt jetzt einen anderen Datensatz als den, den ich gerade bearbeitet habe.Nach der Bearbeitung des Detaildatensatzes ist in der Gridview der falsche Datensatz ausgewählt.

Wie stelle ich nach einer Aktualisierung über DetailsView sicher, dass THAT-Datensatz in der GridView erneut ausgewählt wird, egal, wo er sich jetzt in der GridView-Sortierreihenfolge befindet?

Antwort

0

Sie können die ID jeder Zeile verfolgen, indem Sie das Feld zur DataKeyNames des GridView hinzufügen. Bevor Sie das Gitter in Code-behind zu aktualisieren, erinnern Sie sich die ID der ausgewählten Zeile (unter der Annahme hier, dass die entsprechende ID ein Feld ClientID genannt ist):

int savedClientID = (int)gvClients.DataKeys[gvClients.SelectedIndex].Values["ClientID"]; 

Sie können dann suchen sie nach dem Binden der Daten und wählen Sie die entsprechende Zeile:

void gvClients_DataBound(object sender, EventArgs e) 
{ 
    gvClients.SelectedIndex = -1; 

    foreach (GridViewRow row in gvClients.Rows) 
    { 
     int clientID = (int)gvClients.DataKeys[row.RowIndex].Values["ClientID"]; 

     if (clientID == savedClientID) 
     { 
      gvClients.SelectedIndex = row.RowIndex; 
      break; 
     } 
    } 
} 

UPDATE

Wenn Paging auf im Gridview eingeschaltet ist, können Sie die Methode vorgeschlagen, in diesem Beitrag nicht verwenden müssen: GridView in ASP.Net -- Selecting the correct row

+0

Ich habe fast die gleiche Lösung versucht, nur ein kleiner Unterschied in der Art, wie es Schleifen. Sowohl diese Lösung als auch die andere funktionieren, solange der Datensatz auf der gleichen Seite des GridViews steht und endet. Ich habe Ergebnisse in GridView paginiert. Wenn der bearbeitete Datensatz von Seite 5 zu Seite 1 geht, wird ein Datensatz auf Seite 5 anstelle des bearbeiteten Datensatzes ausgewählt, der jetzt auf Seite 1 ist. –

+0

Ich habe einen Link zu einem Beitrag hinzugefügt, der Ihnen helfen könnte. – ConnorsFan

Verwandte Themen