2016-06-09 9 views
0

Ich habe die gleiche Frage wie:keine Daten Gridview auf Postbacks von Details Bindung

GridView contents don’t update when underlying data changes

aber die gelieferten Antworten arbeiten nicht für mich, ich bin nach Ideen bitte, weil ich bisher verschwendet 3 Tage versuchen, eine GridView auf dem Postback eines DetailsView zu aktualisieren.

Situation ist folgende: -

ich ein Gridview habe, dass, wenn eine Zeile ein Detail zeigt die detaillierten Informationen ausgewählt. in.

Beim Klicken auf Bearbeiten geht der DetailsView in den Bearbeitungsmodus.

Ich bearbeite es und klicken Sie auf die Schaltfläche Aktualisieren.

Das Update löst ein Ereignis aus und es aktualisiert korrekt meine SQL-Datenbanktabelle.

Das Problem ist trotz 100 von Posts sagen GridView1.Databind(); Es wird nicht aktualisiert, bis ich auf die Schaltfläche Abbrechen klicke.

Ich kenne seine Buchung zurück, da ich es debuggte und es in Page_load (...) Postback gesehen habe.

Ich habe

hinzugefügt

SqlDataSource1.DataBind();

und

GridView1.DataBind()

an folgenden Orten und keiner scheint mein Gridview zu aktualisieren.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     ... 
    } 
    else 
    { 
    SqlDataSource1.DataBind(); 
    GridView1.DataBind(); 
    } 
} 

auch

protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e) 
{ 
    GridView1.DataBind(); 
} 

auch

protected void DetailsView1_ItemUpdated(object sender, DetailsViewUpdatedEventArgs e) 
{ 
    //GridView.SelectedIndex = -1; 
    SqlDataSource1.EnableCaching = false; 
    // UpdatePanel14.Update(); 
    SqlDataSource1.DataBind(); 
    GridView1.DataBind(); 
    SqlDataSource1.EnableCaching = true; 
    // EndEditingGridView(); 
} 

So wie Sie ich ein Postbacks unter Page_Load versucht haben, sehen können(), Aktualisierung und aktualisiert des Details zu. Ich habe auch versucht, 'ViewState = Disabled' auf dem GridView zu setzen. Nichts scheint es zu veranlassen, seinen Inhalt zu aktualisieren, wenn ich nicht auf die Schaltfläche 'Abbrechen' klicke. Vielen Dank.

+0

Wenn Sie auf Abbrechen klicken, gibt es einen Postback-Hapenning. Ich würde versuchen zu entfernen: if (! IsPostBack) { ... } sonst { } und ich würde verlassen SqlDataSource1.DataBind(); GridView1.DataBind(); lassen Sie mich wissen, ob dies eine Lösung ist – Alexandre

+0

Wie werden Daten in die DetailsView gefüllt und aktualisiert? Bitte zeigen Sie diesen Code an – naveen

+0

Vielen Dank für Ihre Kommentare, indem Sie sie zum Stamm von Page_Load hinzufügen, so dass die Gridview nicht mehr auswählbar ist. Ich habe meine Antwort unter – FlashTrev

Antwort

0

Ich fand die Antwort von einer früheren Arbeit, die ich getan habe. Was ich gefunden habe, ist, die Gridviews-Datenquelle zu entfernen, ihren Index zurückzusetzen und ihn zu daten. Aktualisieren Sie dann das UpdatePanel, verbinden Sie die Gridview erneut und binden Sie sie erneut ein.

Meine Funktion, die ich am Ende meines DetailsView1_ItemUpdated() Ereignis nennen:

private void EndEditingDetailsView1() 
{ 
    GridView.DataSourceID = null; 
    GridView.EditIndex = -1; 
    GridView.DataBind(); 

    DetailsUpdatePanel.DataBind(); 
    DetailsUpdatePanel.Update(); 

    GridView.DataSourceID = "SqlDataSource"; 
    GridView.EditIndex = -1; 
    GridView.DataBind(); 
} 

arbeitet ein Genuss.

Verwandte Themen