2009-10-01 86 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