有誰知道是否有一種方法使用標準AllUsersWebPart元素和CDATA部分爲屬性部署BrowserFormWebPart(用於列表內容類型的自定義InfoPath表單)?到目前爲止,我嘗試過沒有成功。任何幫助表示讚賞。聲明性地部署BrowserFormWebPart而不使用BinarySerializedWebPart元素
回答
後的研究2天 - 下面的代碼工作
private void UpdateInfoPathForms(SPSite oSite)
{
UpdateInfoPath(oSite, "Lists/Audit Calendar/Item/newifs.aspx");
UpdateInfoPath(oSite, "Lists/Audit Calendar/Item/displayifs.aspx");
UpdateInfoPath(oSite, "Lists/Audit Calendar/Item/editifs.aspx");
}
private void UpdateInfoPath(SPSite oSite, string formFileLocation)
{
var file = oSite.RootWeb.GetFile(formFileLocation);
using (SPLimitedWebPartManager manager = file.GetLimitedWebPartManager(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared))
{
try
{
var wp1 = new Microsoft.Office.InfoPath.Server.Controls.WebUI.BrowserFormWebPart();
wp1.SubmitBehavior = Microsoft.Office.InfoPath.Server.Controls.WebUI.SubmitBehavior.FormDefault;
wp1.FormLocation = "~list/Item/template.xsn";
wp1.ContentTypeId = oSite.RootWeb.Lists["Audit Calendar"].ContentTypes["Item"].Id.ToString();
IListWebPart listWebpart = wp1 as IListWebPart;
listWebpart.ListId = oSite.RootWeb.Lists["Audit Calendar"].ID;
if (formFileLocation.Contains("newifs.aspx"))
{
listWebpart.PageType = PAGETYPE.PAGE_NEWFORM;
}
else if (formFileLocation.Contains("displayifs.aspx"))
{
wp1.ListFormMode = Microsoft.Office.InfoPath.Server.Controls.WebUI.ListFormMode.ReadOnly;
listWebpart.PageType = PAGETYPE.PAGE_DISPLAYFORM;
}
else if (formFileLocation.Contains("editifs.aspx"))
{
listWebpart.PageType = PAGETYPE.PAGE_EDITFORM;
}
listWebpart.ViewFlags = SPViewFlags.None;
manager.AddWebPart(wp1, "Main", 0);
manager.SaveChanges(wp1);
}
finally
{
manager.Web.Dispose();
}
}
我有同樣的問題。這裏是我的嘗試:
<AllUsersWebPart WebPartZoneID="Main" WebPartOrder="2">
<![CDATA[
<webParts>
<webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
<metaData>
<type name="Microsoft.Office.InfoPath.Server.Controls.WebUI.BrowserFormWebPart, Microsoft.Office.InfoPath.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
<importErrorMessage>Cannot import this Web Part.</importErrorMessage>
</metaData>
<data>
<properties>
<property name="ChromeType" type="chrometype">None</property>
<property name="HelpMode" type="helpmode">Modeless</property>
<property name="ChromeState" type="chromestate">Normal</property>
</properties>
</data>
</webPart>
</webParts>]]>
</AllUsersWebPart>
然後我有一個配置Web部件功能接收器:
using (SPLimitedWebPartManager manager = file.GetLimitedWebPartManager(PersonalizationScope.Shared))
{
try
{
BrowserFormWebPart webpart = GetWebPart(manager);
webpart.SubmitBehavior = SubmitBehavior.FormDefault;
webpart.FormLocation = "~list/MyList/template.xsn";
webpart.ContentTypeId = "0x01003C8AD6E14DAD5342BBFAA84E63F8022C";
manager.SaveChanges(webpart);
}
finally
{
manager.Web.Dispose();
}
}
的BrowserFormWebPart性能要求越來越形式來顯示,但由於某些原因,設置AllUsersWebPart部分中的這些屬性不起作用。表單顯示,我可以填寫它,但表單中的值不會插入到列表項的字段中。我向Feature Receiver添加了以下部分,嘗試將表格綁定到列表項的字段中:
IListWebPart listWebpart = webpart as IListWebPart;
listWebpart.PageType = PAGETYPE.PAGE_EDITFORM;
listWebpart.ViewFlags = SPViewFlags.None;
不幸的是,沒有快樂。而且就我而言。希望你會有更好的運氣。
Thansk Rich。這是我正在採取的方法。一旦我有更多信息或解決方案,我將更新帖子。 – 2011-05-26 18:58:55
@Pete Skelly:你最終是否找到了解決方案? – JohnDoDo 2012-02-07 15:14:29
@JohnDoDo不幸的是,客戶端最終放棄了發佈InfoPath Forms並且沒有按照配置部署它們。我進入了.NET Reflector的內核,並確定某些屬性(我無法專門回憶它們)未按預期序列化或反序列化,但耗盡時間。 – 2012-02-08 21:20:20
- 1. 元素聲明一致性
- 2. 使用@Component而不是聲明性聲明?
- 3. 通過ID使用元素而不先聲明ID
- 4. 元素聲明
- 5. 是否可以聲明性地配置spring.net緩存而不是使用屬性
- 6. 使用的元素聲明變量ID
- 7. 如何聲明性地創建自定義HTML元素?
- 8. 如何查找加載子元素而不顯式聲明它的父元素?
- 9. 如何使用xml編寫器創建xml而不聲明元素
- 10. 元素的CSS如下jQuery的聲明,而不是樣式表
- 11. 找不到元素「配置」的聲明,而在春天
- 12. 過濾聲明而不使用從
- 13. 使用Typescript類而不聲明對象
- 14. 找不到元素'beans'的聲明
- 15. 找不到元素「豆聲明:豆
- 16. XMLBeanDefinitionStoreException:找不到的聲明元素 '豆'
- 17. JAXB - SAXParseException找不到元素的聲明
- 18. 找不到元素'assignments'的聲明
- 19. 找不到聲明元素「資源」
- 20. 找不到元素'ehcache'的聲明
- 21. 找不到元素的聲明「模板
- 22. 配置元素未聲明
- 23. 如何聲明DTD元素?
- 24. 結構元素聲明
- 25. XML元素未聲明
- 26. 重新聲明configSection元素
- 27. HTML元素未聲明ID
- 28. XmlSchemaValidationException:'B'元素未聲明
- 29. 使用基本屬性而不是聲明
- 30. 你可以在一組元素上聲明性地設置一個屬性嗎?
你有沒有找到一個解決辦法? – 2012-06-13 07:16:04
@SteveB看到我下面的評論。我從來沒有找到這個解決方案... – 2012-06-14 11:29:26