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