2012-04-19 53 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

你能提供更多关于你的问题的细节吗?下拉式填充一些DataSet?或者你想在主页上选择一年下拉式选项,并在今年的所有其他页面上查看? – Dima 2012-04-19 17:13:50

+0

这两个都有一点,裸露在我请你,我是这个网站的新手。从下拉菜单中选择与当前会计年度相关的数据集,从1996年开始,我希望当用户从主页面选择一年(即2007年)时,可以使用标签来显示其他每个当前选定值9页。这有意义吗? – developthestars 2012-04-19 17:17:26

+1

@developthestars - 嗨,你有可能把标签放在母版页上吗?我认为它会起作用。访问母版页标签来填充和显示 – 2012-04-19 17:25:56

回答

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; 
     } 
    } 

现在,要显示这个在每个页面,只需注册用户控制:

0:

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

而且插入页面上的任何地方控制的实例

而瞧,一个简单,易于维护的解决方案。

编辑:

'' '在下拉的选择的指数的事件(填充年即2011年,2010年,2009年),' ''

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

变化

New SettingsManager().Year = dropdownlist1.Text 
+0

这适用于当年的一个实例,我如何配合它来填充用户从我的主页上的下拉列表中选择的内容? – developthestars 2012-04-19 19:38:51

+0

我更新了我的答案,包括该代码 – 2012-04-19 20:42:02

+0

我有我的get/if语句设置我的defualt值的问题出来的权利...任何建议? – developthestars 2012-04-20 13:20:50

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

我相信你应该考虑创建与您的下拉列表中选择母版,并创建一个基于9页在该主页上。

+0

@Dim谢谢你的帮助,但是,标签仍然不会填充。我将把它和我的主人绑在一起,看看Pleun和Mohan的建议是否可以使用 – developthestars 2012-04-19 17:32:28