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)に入力したいものです。何か提案はありますか?

4

3 に答える 3

1

メインページで、選択した年をセッションに保存します。

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

他のページ:

Function GetDates(currentYear As Double) As String 
    Dim x As String 
    x = Session("myYear")
    Return x 
End Function 
于 2012-04-19T17:21:51.053 に答える
1

ドロップダウンを使用してマスターページを作成することを検討し、そのマスターページに基づいて9ページを作成する必要があると思います。

于 2012-04-19T17:27:56.737 に答える
0

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

以下のSettingsManagerのようなクラスを作成することにより、サイトのどこからでも、保存方法や保存場所の詳細を知らなくても、1つのポイントからYear値にアクセスできます。

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" />

そして出来上がり、シンプルでメンテナンスが簡単なソリューション。

編集:

'''ドロップダウンの選択されたインデックスイベント(2011、2010、2009などの年を入力)'''

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

への変更

New SettingsManager().Year = dropdownlist1.Text
于 2012-04-19T17:54:02.243 に答える