سؤال

أقوم بتمرير المعلمات إلى WebPart من مربع نص ليصبح تجربة واجهة مستخدم أفضل لشركة WebPart غير قابلة للتخصيص والتي تأخذ في هذه الحالة شكل تغذية Twitter.

المشكلة لدي، في السيناريو، في السيناريو أن المستخدم لديه أكثر من مثيل واحد من WebPart على الصفحة، لا يمكن لأحداث Click التي تعطل المعلمة معرفة WebPart التي تقوم بإجراء المكالمة.

هل يمكنني اجتياز نوع من المعلمة من EventArgs إلى GetLimitedWebPartManager الذي يحدد مثيل فريد من WebPart؟ giveacodicetagpre.

هل كانت مفيدة؟

المحلول

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
                {
                }
            }
        }
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى sharepoint.stackexchange
scroll top