getLimitedWebPartManagerを使用したWebパーツの特定のインスタンスへの渡しパラメータ
-
09-12-2019 - |
質問
この場合、Twitterフィードの形式を取ります。
問題がある問題は、ユーザがページ上のこのWebPartの複数のインスタンスを持っていることをシナリオで、パラメータを設定するクリックイベントはどのWebPartがコールをかけているかを知らせない。
eventArgsからgetLimitedWebPartManagerにある種のパラメータを渡すことができ、WebPartの一意のインスタンスを識別する
protected void setTwitterName_Click(object sender, EventArgs e)
{
string Name = TwitterHandle.Text.Trim();
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>())
{
twitterWebPart.Name = Name;
webPartManager.SaveChanges(twitterWebPart);
PropertiesWebPart.Name = Name;
DisplayTweets();
}
}
catch
{
}
}
}
}
. 解決
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
{
}
}
}
}
}
所属していません sharepoint.stackexchange