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

我相信您应该考虑使用下拉菜单创建母版页,并基于该母版页创建 9 个页面。

于 2012-04-19T17:27:56.737 回答
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 回答
0

这似乎非常适合用户控件。您可以将标签显示的功能合并到一个类中。对显示/功能的任何后续更改只需编码一次。此外,通过允许每个页面决定是否显示/显示什么,这种方法将为您提供将来不可避免地需要的灵活性。

通过创建一个类,例如下面的 SettingsManager,您可以从站点的任何位置通过单个点访问 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 回答