2011-07-04 66 views
0

我遇到了webparts變量的麻煩......我來自標準的ASP語言,所以對於我來說,在會話和其他部分中存儲變量是執行所有操作的常用方法=)Sharepoint 2007重新加載Webpart變量的問題

現在我不得不創建一個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; 
    } 
} 

回答

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

+0

我不是指的答案得罪,但跳過你需要了解的第一步這一切是如何聯繫在了一起稍後會引來麻煩。 – Ryan

+0

我閱讀了很多很多教程......我只發佈了1%的代碼我寫的問題是要了解如何管理屬性:當我按下按鈕時,變量可能會保留,但當下拉列表滾動並且事件生成每個數據都會丟失並重置! 我真的很想知道是否有任何存儲我的變量的元素,因爲使用我公開的方法不能正常工作 –

+0

狀態通常由asp保存。在頁面加載之間在VIEWSTATE中使用net web控件,然後通過代碼將其保存到ApplyChanges中的Web部件屬性中。除非你做了很奇怪的事情,否則你不必擔心視圖狀態 - 它只是自動運行。至於你對「CreateChild(甚至比OnLoad更早!」)的評論,「它應該如何工作。您無法在控件創建之前發出加載事件。 http://msdn.microsoft.com/en-us/library/ms178472.aspx – Ryan