【问题标题】:Loss of properties webpart toolpart moss 2007属性损失 webpart toolpart moss 2007
【发布时间】:2011-05-12 03:11:24
【问题描述】:

我遇到了以下问题:

我用 ToolPart 创建了一个 WebPart, 此工具部分有多个控件(文本框、下拉列表...) 当我填写所有内容并申请时,一切顺利, 即使我按下确定。但是当我回到 编辑->修改webpart,我输入的所有数据都消失了。 我该如何解决这个问题?

谢谢

【问题讨论】:

    标签: sharepoint moss web-parts


    【解决方案1】:

    您需要将工具部件中的值保存在 Web 部件的属性中。例如,假设我想为“Title”保存一个字符串...在 webpart 中定义一个属性:

    private const string DEFAULT_WPPColumnTitle = "Title";
    private string _WPPColumnTitle = DEFAULT_WPPColumnTitle;
    
    [Browsable(false)]
    [WebPartStorage(Storage.Shared)]
    public string WPPColumnTitle
    {
        get { return this._WPPColumnTitle; }
        set { this._WPPColumnTitle = value; }
    }
    

    我总是使用前缀“WPP”来将所有web p艺术p属性放在一起。

    然后,在 Toolpart 的 ApplyChanges 覆盖中,将控件的值 (_ddlColumnsTitle) 保存到 webpart (WPPColumnTitle):

    /// <summary>
    /// Called by the tool pane to apply property changes to
    /// the selected Web Part.
    /// </summary>
    public override void ApplyChanges()
    {
        // get our webpart and set it's properties
        MyCustomWebPart et = (MyCustomWebPart)ParentToolPane.SelectedWebPart;
        et.WPPColumnTitle = _ddlColumnsTitle.SelectedValue;
    }
    

    最后,如果用户已经编辑了属性,我们希望 Toolpart 预填充用户的配置。在 Toolpart 的 CreateChildControls() 方法中,初始化控件:

    protected override void CreateChildControls()
    {
        try
        {
            MyCustomWebPart et = (MyCustomWebPart)ParentToolPane.SelectedWebPart;
    
            // ... code to create _ddlColumnsTitle and add it to the Controls
    
            // default our dropdown to the user's selection
            ListItem currentItem = _ddlColumnsTitle.Items.FindByValue(et.WPPColumnTitle);
            if (null != currentItem)
            {
                _ddlColumnsTitle.SelectedValue = currentItem.Value;
            }
        }
        catch (Exception ex)
        {
            _errorMessage = "Error adding edit controls. " + ex.ToString();
        }
    }
    

    【讨论】:

    • 我已经拿到了。但我的问题是当我申请或按确定时,然后返回到我的 webpart 的编辑模式,我的所有属性都恢复为默认值......也许当我进入编辑模式时我需要覆盖我的 webpart 中的一个函数?
    • Erm - 你还有问题吗?答案被标记为正确,所以不确定。
    • @Ruben,抱歉忘记了使用用户之前的选择初始化 Toolpart 的部分。看起来你无论如何都能让它工作。为了完整起见,我更新了我的答案。:)
    【解决方案2】:

    打开调试器并仔细检查这些值是否正在应用到您的属性中(即设置了 WPPColumnTitle)。

    如果是这样,那么问题是 SharePoint 没有将属性 (WPPColumnTitle) 中的值序列化/反序列化到数据库并返回 - 通过在 Web 部件上写出此属性进行验证 - 只要您离开页面并返回它将是空的。

    如果是这样,请在课堂上检查类似的内容

    [XmlRoot(Namespace = "YourNamespace")]
    

    这(不是绝对必要的)属性

    [XmlElement(ElementName = "ColumnTitle")]
    

    如果您将 Web 部件类命名为“WebPart”,我也看到了一些问题,因此将其命名为 MyWebPart

    【讨论】:

      【解决方案3】:

      我已经通过在我的 Web 部件“IsNeverSet”(布尔)中添加一个属性来解决它 当我转到工具部分的“CreateControls()”时,我得到了这个属性 如果它是假的,我会从我的 webpart 中加载所有属性并将它们填充到 toolpart 中。 所以我在 Kit Menke 的帮助下找到了它

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-24
        • 1970-01-01
        • 1970-01-01
        • 2010-12-02
        • 2010-12-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多