Announcement

Collapse
No announcement yet.

Webpart User Controls Visible funktioniert nicht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Webpart User Controls Visible funktioniert nicht

    Ich baue gerade meinen ersten Sharepoint Webpart und der besteht aus mehreren Controls

    Code:
    public class VisualWebPart1 : WebPart
        {
            private const string _ascxPath = @"~/_CONTROLTEMPLATES/ucDatenErfassen.ascx";
            private const string _ascxMenuePath = @"~/_CONTROLTEMPLATES/ucMenue.ascx";
            private const string _ascxAdminPath = @"~/_CONTROLTEMPLATES/ucAdministration.ascx";
    
            protected override void CreateChildControls()
            {
                try
                {
                    Microsoft.SharePoint.WebControls.CssLink cssLink = new Microsoft.SharePoint.WebControls.CssLink();
                    cssLink.DefaultUrl = "/_layouts/Menu.css";
                    this.Page.Header.Controls.Add(cssLink);
    
                    Control control = Page.LoadControl(_ascxMenuePath);
                    Controls.Add(control);
    
                    Control control2 = Page.LoadControl(_ascxPath);
                    Controls.Add(control2);
    
                    Control control3 = Page.LoadControl(_ascxAdminPath);
                    control3.Visible = false;
                    Controls.Add(control3);
                }
                catch (Exception ex)
                {
                    Console.Out.Write("CreateChildcontrol " + ex.Message);
                }
            }
    Es gibt einen Bereich für normale Nutzer, einen Adminbereich und ein Menü, mit dem man dazwischen umschalten kann.
    Wenn ich mich innerhalb eines Bereichs aufhalte, funktioniert auch alles.
    Jetzt will ich aber aus dem Adminbereich heraus Daten in den Benutzerbereich laden und diesen anzeigen lassen und da klemmts - nicht mit dem Laden, das klappt, aber mit dem Anzeigen.

    In einer Liste rufe ich über RowCommand folgnde Funktion auf
    Code:
    protected void gvAbrechnung_RowCommand(object sender, GridViewCommandEventArgs e)
            {
                if (this.Parent.Controls[1] != null && this.Parent.Controls[2] != null)
                {
                    this.Parent.Controls[1].Visible = true; // Benutzerbereich anzeigen
                    this.Parent.Controls[2].Visible = false; // Adminbereich ausblenden
                    
                    ucDatenErfassen ucd = (ucDatenErfassen)this.Parent.Controls[1]; // Objekt Benutzerbereich holen
                    ucd.LoadAdminReisekostenByID(e.CommandArgument.ToString()); // Funktion darin ausführen, Daten holen
                                    
                }
            }
    Wird für die Controls Visible gesetzt, so wird das im Objekt auch übernommen, sagt der Debugger, aber im Browser sehe ich weiterhin den Adminbereich (und ja, Controls[1] ist der Benutzerbereich, Controls[2] der Adminbereich)

    Das Umschalten zwischen den beiden Bereich im Menü erfolgt auf die gleiche Weise und da funktionierts
    Code:
    protected void btnDaten_Click(object sender, EventArgs e)
            {
                if (this.Parent.Controls[1] != null && this.Parent.Controls[2] != null)
                {
                    this.Parent.Controls[1].Visible = true;
                    this.Parent.Controls[2].Visible = false;
                }
            }
    Vielleicht geh ich da komplett falsch ran, aber kann mir hier jemand helfen?

  • #2
    hast du vielleicht eine funktion die du separat aufrufst, in der du den adminbereich visible schaltest?
    z.b. LoadAdminReisekostenByID

    anhand des codes der da steht finde ich gerade auch keinen fehler.

    Comment


    • #3
      Ich habs jetzt anders gelöst, ich hole mir das Menü (Parent.Controls[0]) und rufe da die Funktion auf, die beim Klicken des Buttons aufgerufen wird. Funktioniert.

      Comment

      Working...
      X