2009-10-01 78 views
1

我正在做一個報表,根據一些搜索參數在網格視圖中顯示記錄。在這一個搜索過濾器是下拉與年值。下降應該包含從2000年到今年的年份。如果年份發生變化,它應該在下一年自動綁定。 我該如何做到這一點?綁定一個下拉框

回答

2

可能我不理解你的問題吧,但看起來你只是'約束'一個簡單的下降到一些年的價值。如果是這樣的話,我會把以下到您的Page_Load

if (!IsPostBack) 
{ 
    for(int i = 2000, i <= DateTime.Now.Year; i++) 
    { 
    MyDropDownList.Items.Add(i.ToString()); 
    } 
    //Select the current year initially 
    MyDropDownList.SelectedIndex = MyDropDownList.Items.Count - 1; 
} 

//Later on in your Page_Load 
MyGridView.DataSource = MyMethodOfFetchingData(MyDropDownList.SelectedValue); 
MyGridView.DataBind(); 

在這一點上,你需要檢索數據時顯示使用MyDropDownList.SelectedValue。編輯: 添加當前年份的默認選擇。

+0

嗨,感謝您的回覆。我如何在C#中訪問此值?因爲我必須發送這個作爲搜索參數 – susanthosh 2009-10-01 14:48:37

+0

這是好朋友。但是你沒有爲數據項分配任何值。只需添加文本值即可。那麼我們如何使用.SelectedValue屬性? – susanthosh 2009-10-01 14:56:03

+0

MyDropDownlist.Items.FindByValue(Today.Year.ToString())。Selected = True; 我在下面提到它。 – JonH 2009-10-01 14:57:08

0

利用Date.Today,你需要給我們一些更多的信息,但是在vb.net/C#中有很多引用當前年份的變量。

Me.MyDropDownList.Items.FindByValue(CTYPE(Today.Year,字符串))。選擇=真

[編輯部分]

以上是將值綁定到當前的年份。只是注意,這可能是值得的歲月存儲在數據庫中從2000年開始,直到說出一些最大數量,然後中檢索行:

SELECT TheYear FROM YourTable WHERE TheYear <= YEAR(GetDate()) 

,將返回2000,直到今年。這將使您的代碼可以重用,然後將行綁定到某些數據集或數據控件。它還可以避免在頁面加載事件中出現循環。

只是有些想法!

0

我完全知道你在說什麼,但我認爲這是接近:

基本上有3個組成部分

ASP:DropDownList的ID = 「DDL1」 ASP:SqlDataSource的 ASP :GridViewControl

將數據源配置爲在WHERE子句中使用ddl1.SelectedValue。 (參數資料來源:控制值= ddl1.SelectedValue)

綁定網格視圖的數據源

在這一點上,最簡單的方式來獲得你想要的是對DDL1啓用的AutoPostBack,並讓魔術發生本身。

+0

是否有任何類來實現這個? – susanthosh 2009-10-01 15:01:31

+0

Autopostback將導致頁面刷新,並且數據綁定應該自動進行控制。您不需要編寫任何代碼,只需在設計器中配置屬性即可。 – 2009-10-01 15:59:56