我有一个下拉列表,用于填充计算中的一组数据。我的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)
在您的主页面中将所选年份保存到会话:
Session.Add("myYear", dropdownlist1.SelectedValue)
在其他页面中:
Function GetDates(currentYear As Double) As String
Dim x As String
x = Session("myYear")
Return x
End Function
答案 1 :(得分:1)
我相信您应该考虑使用下拉列表创建母版页,并根据该母版页创建9页。
答案 2 :(得分: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