【问题标题】:Sharepoint 2007 Webpart variables problem on reloadSharepoint 2007 Webpart 重新加载时的变量问题
【发布时间】:2011-09-28 03:38:18
【问题描述】:

我在处理 webparts 变量时遇到了问题...我来自标准 ASP 语言,所以对我来说,将变量存储在会话和其他部分是做所有事情的常用方法 =)

现在我必须创建一个 webpart,wp 必须根据参数编写一个图表,我无法理解变量是如何工作的:我无法理解何时保存和何时删除以及其他类似的事情!

让我解释一下:我有一个带有右侧配置工具栏的 Web 部件,我在其中放置了值。每次按下按钮或下拉列表中的值发生更改时,它都会引发一个导致“CreateChild”的事件"函数..

很多时候数据是“存储”的,其他时候不是!

这就是我用来存储价值的方式(在 ApplyChanges 覆盖函数中):

WPChartGenerator wpParent = (WPChartGenerator)this.ParentToolPane.SelectedWebPart;
wpParent.WebUrl = txtWebUrl.Text.Trim();

在 CreateChild 事件中,我得到如下值:

WPChartGenerator wpParent = (WPChartGenerator)this.ParentToolPane.SelectedWebPart;
this.ddlWeb = new DropDownList();
this.ddlWeb.ID = "ddlweb" + wpParent.ID;
ddlWeb.SelectedValue = wpParent.WebService;

现在.. 有时这可行,例如,当我按下按钮时,我在按钮的代码中调用,然后是存储每个值的代码。在某些情况下(如按钮),这可行,在其他情况下(如下拉列表索引更改事件)这失败了,我发现 wpPar​​ent 中的每个对象都等于它的初始值。

我注意到的另一件事是,在某些情况下,当一个事件被触发时,首先要执行的事情(甚至比事件的关联代码更早)il CreateChild(甚至比 OnLoad 更早!!!)

谁能告诉我我做错了什么?有人有这方面的好教程吗?

感谢和抱歉 4 我的学校英语水平 =)

忘了说每个变量都被实现为一个属性,就像这样:

[WebBrowsable(false)]
[Personalizable(PersonalizationScope.Shared)]
[WebPartStorage(Storage.Shared)]
public string WebUrl
{
    get
    {
        return this.webUrl;
    }
    set
    {
        this.webUrl = value;
    }
}

【问题讨论】:

    标签: sharepoint sharepoint-2007 web-parts


    【解决方案1】:

    我看不到那里的所有代码,所以我真的不知道你做错了什么(即你是否真的有一个 ApplyChanges 方法)但从你表达问题的方式来看,听起来你真的需要从头开始,遵循这些演练教程之一并确保您了解基础知识,然后开始为您的项目添加代码。

    MSDN - Creating Web Parts for SharePoint (VS2010)

    MSDN - Walkthrough: Creating a Basic SharePoint Web Part (WSS 3.0)

    Developing SharePoint 2007 Web Parts

    【讨论】:

    • 我并不是要冒犯答案,而是跳过你需要采取的第一步,以了解这一切如何联系在一起会在以后导致麻烦。
    • 我阅读了很多很多教程...我只发布了我编写的代码的 1%。我的问题是了解如何管理属性:当我按下按钮时,变量可能保留,但是当下拉列表滚动并生成事件时,每个数据都会丢失并重置!我真的很想知道是否有任何元素存储我的变量,因为使用我公开的方法它不能按预期工作
    • 状态通常由 VIEWSTATE 中的 asp.net Web 控件在页面加载之间保存,然后由您的代码持久保存到 ApplyChanges 中的 Web 部件属性。除非你做了一些非常奇怪的事情,否则你不必担心视图状态——它会自动工作。至于你关于“CreateChild(甚至比 OnLoad 更早!!!)”的 cmets,这就是它应该如何工作的。在控件创建之前,您不能在控件上发出加载事件。 msdn.microsoft.com/en-us/library/ms178472.aspx
    • 好的,那么持久化一些数据的正确方法是这样的吗?创建一些属性 创建一个 ApplyChanges,它使用 ParentToolPane.SelectedWebPart 对象覆盖和存储数据 在 CreateChild 中手动加载数据 这是正确的吗?对不起,但我有一个奇怪的情况,为了保持密码字段的填写,我必须手动调用一些“CreateChild”,我认为这个调用是问题所在!非常感谢!
    • 好的,现在我明白了我错过了什么...这是因为用户必须插入凭据和其他东西。当用户推送连接数据时,从下拉列表内的列表中收集数据,该下拉列表允许选择要在图表中打印的数据(这是整个项目的用户视图)。在这种项目中,我有很多触发刷新的事件,并且在某些情况下状态保存在其他情况下!
    猜你喜欢
    • 2011-06-27
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 2010-11-17
    • 2011-11-29
    • 2011-03-06
    相关资源
    最近更新 更多