Frage

Ich bin mit c # .net

Ich habe einen Repeater in einer Ansicht (Multiview) jede Zeile enthält eine Schaltfläche ‚Bearbeiten‘ (gespeichert auf dem Command ist die Typ-ID).

<asp:Button ID="buttonClick" OnCommand="ButtonClick" CommandArgument='<%#Eval("ID")%>' runat="server" Text="Edit"/>

Wenn der Benutzer klickt auf die Schaltfläche ‚Bearbeiten‘ sie durch (Bearbeiten-Ansicht) zu einer anderen Ansicht getroffen werden.

Je nachdem, welche Art Eval ( „ID“) ein anderes Benutzersteuerelement ausgewählt ist, muss sichtbar sein.

Ich habe bemerkt, dass, wenn Postback auftritt, auf der gleichen Form (Edit View) es seinen Zustand für die dynamische Kontrolle verliert. Deshalb denke ich, dass ich für den Zugriff benötigen / bevölkern die DIV (appViewArea) über die Page_Load.

In meinem Page_Load Ich will nur den DIV mit dem richtigen Usercontrol füllen, wenn der Benutzer das Bearbeiten-Ansicht zugegriffen hat. Hier ist, was ich zur Zeit in meinem Page_Load haben.

if(_multiView1.ActiveViewIndex == 1) // This is the Edit View
{
  int typeId = Convert.ToInt32(viewAppointmentID.Value); // viewAppointmentID is a hidden field which is created within the ButtonClick method.

switch (typeId)
{
  case 1:
        {
          var control = Page.LoadControl("~/editBirthAppointment.ascx");
          appViewArea.Controls.Add(control); 
        }
        break;
  case 2:
        {
          var control = Page.LoadControl("~/editDeathAppointment.ascx");
          appViewArea.Controls.Add(control); 
        } 
        break;
}
}

protected void ButtonClick(object sender, CommandEventArgs e)
{
   var viewAppointmentID = Convert.ToInt32(e.CommandArgument);
   _multiView1.ActiveViewIndex = 1;
}

Mein Problem ist, dass es geht nie in die, wenn statament (_mutliview) und es speichert auch nicht die viewAppointmentID. Ich habe rund um die Web gesucht, aber kann nichts finden, dass wirklich hilft mir heraus. Bin ich es den falschen Weg zugreifen?

Vielen Dank im Voraus für jede Hilfe.

Danke

Clare

War es hilfreich?

Lösung 2

Ich habe diesen Code stattdessen in meine Schaltfläche Ereignis. Es scheint zu funktionieren jetzt so muss es innerhalb der Viewstate werden zu speichern.

Andere Tipps

Sie brauchen nicht auf die page_load aber das OnCommand Ereignis aus dem Netz und in diesem Fall, dass Sie den befehl überprüfen und / oder commandarguments

es scheint, dass Sie verwenden sollten,

  if(!Page.IsPostback())
       // fill grid here

und im onRowCommand Fall, dass Sie die Benutzersteuerelemente auf der Seite hinzufügen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top