Laden...

UserControl mit GridView: SelectedPersistedDataKey nicht rechtzeitig aktualisiert?

Erstellt von SkySurfer vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.280 Views
S
SkySurfer Themenstarter:in
298 Beiträge seit 2006
vor 12 Jahren
UserControl mit GridView: SelectedPersistedDataKey nicht rechtzeitig aktualisiert?

Hi,
ich habe ein UserControl erstellt auf dem ein GridView und eine ObjectDataSource
liegen. Diese bekommen über eine Eigenschaften die Information welche Daten angezeigt werden sollen. Das UserControl bietet eine Update Methode welche das Query ausführt und anschließen ein Changed Event des UserControls auslößt.


   public void Update()
   {
      ObjectDataSource1.SelectParameters["Param1"].DefaultValue = _param1.ToString();
      ObjectDataSource1.SelectParameters["Param2"].DefaultValue = _param2.ToString();
      GridView1.DataBind();
      GridView1.SelectedIndex = 0;
      SelectedIndexChanged(this, EventArgs.Empty);
   }

Die Daten werden in das GridView geladen und der erste Datensatz wird selektiert. Die DataKeyNames Eigenschaft des GridViews ist auf den Primärschlüssel des Datensatzes gesetzt und wird über eine Eigenschaft direkt wieder an die Seite zurück geben.


   public int SelectedData
   {
      get
      {
         int data = 0;
         if (GridView1.SelectedPersistedDataKey != null)
         {
            data = (int) GridView1.SelectedPersistedDataKey.Value;
         }
         return data;
      }
   }

Die Parameter für dieses UserControl werden über eine andere GridView ausgewählt und an das UserControl in der SelectedIndexChanged Methode übertragen.

Das ganze funktioniert beim ersten Pageload (IsPostBack = false)
und wenn ich die Daten im GridView des UserControls per Maus selektiere. Dann wird das SelectedChangedEvent des UserControls gefeuert und die Seite bekommt über die SelectedData Eigenschaft den richtigen Wert geliefert.

Wenn ich jedoch einen anderen Parameter für das UserControl in dem GridView der Seite wähle wird zwar das GridView im UserControl aktualisiert und zeigt die richtige Datan an aber die SelectedData Eigenschaft liefert noch den zuletzt selektierten Wert zurück und noch nicht den neuen, welcher jedoch bereits im UserControl als selektiert dargestellt wird.

Woran kann das liegen?

Gruß SkySurfer

Es gibt 11 Arten von Menschen:

  • Die, die binär verstehen
  • Die, die es nicht tun
  • Die, die Witze darüber machen
3.170 Beiträge seit 2006
vor 12 Jahren

Hallo,

bist Du sicher, dass der SelectedPersistedDataKey die richtige Property für Dich ist? Normalerweise dient sie dazu, in einem GridView mit Paging dafür zu sorgen, dass egal welche Seite ausgewählt ist, das gewählte Objekt auch ausgewählt bleibt, unabhängig davon, ob es gerade auf der Seite sichtbar ist oder nicht.

Dein UserControl hat ja offenbar auch eine eigenes SelectedIndexChanged-Event. Feuerst Du dieses nur in der Update-Methode, oder auch im GridView.SelectedIndexChanged? Und wann genau (von welchem Handler) wird die Update-Methode aufgerufen?

Ein wenig mehr Information über die Struktur und Zusammenhänge von UserControl, GridView und Controls der Page, die das UserControl ansteuern, wäre sicherlich hilfreich. Vielleicht kannst Du mal ein minimalisiertes, abgespecktes UserControl und eine Page dazu hier einstellen, nur als Gerüst, damit man die Problematik besser nachvollziehen kann.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca