Frage

Ich überliefe Parameter in ein WebPart aus einem Textfeld, um ein besseres UI-Erlebnis für ein personalisierbares WebPart zu erhalten, das in diesem Fall die Form eines Twitter-Feeds hat.

Das Problem, das ich habe, ist im Szenario, in dem ein Benutzer mehr als eine Instanz dieses WebPart auf der Seite hat, das Click-Ereignis, das den Parameter einstellt, kann nicht sagen, welches WebPart den Anruf tätigt.

Kann ich einen Parameter von Eventargs an GetLimitedWebPartManager übergeben, der eine einzigartige Instanz des WebParts identifiziert? generasacodicetagpre.

War es hilfreich?

Lösung

Casting the control to its type, and then getting the ID of the BindingContainer, which is the WebPart, allows me to match that parameter to the ID of the Web Part being called.

    protected void setTwitterName_Click(object sender, EventArgs e)
    {
        string Name = TwitterHandle.Text.Trim();
        var x = (Button)sender;
        var WebPartID = x.BindingContainer.ID;

        if (!String.IsNullOrEmpty(Name))
        {
            using (var webPartManager = SPContext.Current.Web.GetLimitedWebPartManager("default.aspx",PersonalizationScope.User))
            {
                try
                {
                    foreach (var twitterWebPart in webPartManager.WebParts.Cast<WebPart>().Where(webPart => webPart.Title == "Twitter").Cast<Twitter>())
                    {
                        if(twitterWebPart.ID == WebPartID)
                        {
                            twitterWebPart.Name = Name;
                            webPartManager.SaveChanges(twitterWebPart);
                            PropertiesWebPart.Name = Name;
                            DisplayTweets();
                        }

                    }
                }
                catch
                {
                }
            }
        }
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top