2012-04-19 7 views
0

私は、計算からデータのセットを入力するドロップダウンリストを持っています。 asp.netサイトには、メインページのドロップダウンリストから現在のデータを含むラベルを表示する複数のページがあります。ここに私のコードは...複数のページにラベルを設定する

''' In the page load''' 
Dim Val As Double 
    If Date.Now.Month = 10 OrElse Date.Now.Month = 11 OrElse Date.Now.Month = 12 Then 
     Val = Date.Now.Year 
    Else 
     Val = Date.Now.Year - 1 
    End If 

    For i = Val To 1996 Step -1 
     dropdownlist1.Items.Add(i) 
    Next 
End Sub 

'''function in a seperate class''' 
Function GetDates(currentYear As Double) As String 
    Dim x As String 
    Return x 
End Function 

'''In the selected index event of the drop down (populates years ie. 2011, 2010, 2009)''' 
Dim x As String = class1.GetDates(dropdownlist1.Text) 

'''In the other pages load events''' 
Dim x As String = class1.GetDates(label1.Text) 

あるコードのこの上の行は、私は現在の年(すなわち。2011年、2010年、2009年)で任意の提案を移入したい何ですか?あなたのメインページで

+0

あなたの問題の詳細を教えてもらえますか?いくつかのデータセットをドロップダウンしますか?または、メインページのドロップダウンで1年を選択し、今年の他のすべてのページを参照したいですか? – Dima

+0

どちらも少し、私と一緒に裸私はこのサイトに新しいです。ドロップダウンでは、1996年から現在の会計年度に関連するデータセットが作成されます。ユーザーがメインページから年(つまり2007年)を選択したときに、他のそれぞれの現在の選択値を示すラベルが必要です9ページ。これは理にかなっていますか? – developthestars

+1

@developthestars - こんにちは、マスターページにラベルを貼ることは可能ですか?私はそれがうまくいくと思います。塗りつぶしのマスターページラベルにアクセスし、@Dimのおかげであなたの助けを借りて –

答えて

0

これはユーザーコントロールに最適なようです。ラベル表示の機能を1つのクラスに統合することができます。ディスプレイ/機能のその後の変更は、一度コード化するだけで済みます。また、各ページが表示するかどうかを決定できるようにすることで、このアプローチは将来的に必然的に必要となる柔軟性を提供します。

下記のSettingsManagerのようなクラスを作成すると、サイトのどこからでも1つのポイントで年値にアクセスできます。

public class SettingsManager 
{ 
    public string Year 
    { 
     get 
     { 
      if (HttpContext.Current.Session["SettingsManager:Year"] == null) 
      { 
       //set default value 
      } 
      return HttpContext.Current.Session["SettingsManager:Year"].ToString(); 
     } 
     set 
     { 
      HttpContext.Current.Session["SettingsManager:Year"] = value; 
     } 

    } 
} 

コードビハインドでシンプルなラベル(lblYear)と次のコードを持っていますあなたのユーザーコントロール:あなたはこれをで表示したいページごとに、今

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!this.IsPostBack) 
     { 
      this.lblYear.Text = new SettingsManager().Year; 
     } 
    } 

を、単に登録ユーザーコントロール:

<%@ Register Src="~/WebUserControl1.ascx" TagName="YearControlUC" TagPrefix="SO" %> 

どこでもページ上のコントロールのインスタンスを挿入します。

<SO:YearControlUC runat="server" /> 

そして、簡単で、維持しやすい解決策です。

EDIT:

'' 'ドロップの選択されたインデックスのイベントでダウン(年移入すなわち2011年、2010年、2009年。)' '

New SettingsManager().Year = dropdownlist1.Text 

Dim x As String = class1.GetDates(dropdownlist1.Text) 

変更を'

+0

これは今年のインスタンスのために働いたのですが、ユーザーがメインページのドロップダウンから選択したものをどのように埋めるのですか? – developthestars

+0

私はそのコードを含めるように私の答えを更新しました –

+0

私のget/ifステートメントで設定した私のdefualt値を問題にしています。 – developthestars

1

は、セッションにあなたの選択した年を救う:私はあなたのドロップダウンでマスターページを作成するに見て、ベースの9ページを作成する必要があります信じて

Function GetDates(currentYear As Double) As String 
    Dim x As String 
    x = Session("myYear") 
    Return x 
End Function 
1

:他のページで

Session.Add("myYear", dropdownlist1.SelectedValue) 

そのマスターページに

+0

を表示しても、ラベルはまだ表示されません。私はそれを私のマスターに結びつけて、PleunとMohanの提案がうまくいくかどうかを確認します。 – developthestars

関連する問題