2011-07-04 9 views
0

webparts変数に問題があります...私は標準のASP言語から来ていますので、セッション変数やその他の部分に変数を格納するのは一般的な方法です=)Sharepoint 2007リロード時のWebpart変数の問題

私はwebpartを作成しなければなりませんでした.WPはパラメータからグラフを書く必要があり、HOW変数の動作を理解できません:保存されたWHENと消去されたWHENなどのことを理解できません。

説明しておきたいのは、右に値を置く設定ツールバーのある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(イベントに関連付けられたコードよりも、最初に)実行することである(読み込み時よりもさらに最初!!!)

誰か私が間違ったやり方でやっていることを教えてもらえますか?誰もこの問題のために良いtutoriaを持っていますか?

おかげ&申し訳ありません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のネットWebコントロールが作成され、コードによってApplyChangesのWebパーツプロパティに保持されます。非常に奇妙なことをしない限り、viewstateについて心配する必要はありません - それは自動的に動作します。 "CreateChild(OnLoad !!!よりも最初のもの)"についてのあなたのコメントは、どのように動作するのでしょうか?コントロールが作成される前に、コントロールでloadイベントを発行することはできません。 http://msdn.microsoft.com/en-us/library/ms178472.aspx – Ryan

関連する問題