首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在不使用BinarySerializedWebPart元素的情况下以声明方式部署BrowserFormWebPart

在不使用BinarySerializedWebPart元素的情况下以声明方式部署BrowserFormWebPart
EN

Stack Overflow用户
提问于 2011-05-17 23:41:32
回答 2查看 1.4K关注 0票数 2

有没有人知道有没有办法使用标准的AllUsersWebPart元素和属性的CDATA部分来部署BrowserFormWebPart (列表内容类型的自定义InfoPath表单)?到目前为止,我试过了,但没有成功。任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-03 14:12:46

经过2天的研究-遵循代码工作

代码语言:javascript
复制
  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();
            }
        }
票数 2
EN

Stack Overflow用户

发布于 2011-05-24 20:55:32

我也遇到过同样的问题。这是我尝试过的:

代码语言:javascript
复制
<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部件的功能接收器:

代码语言:javascript
复制
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添加了以下部分,以尝试将表单绑定到列表项的字段中:

代码语言:javascript
复制
IListWebPart listWebpart = webpart as IListWebPart;
listWebpart.PageType = PAGETYPE.PAGE_EDITFORM;
listWebpart.ViewFlags = SPViewFlags.None;

不幸的是,没有joy。这就是我所能做的。希望你有更好的运气。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6033417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档