我正在做一个报告,根据一些搜索参数在网格视图中显示记录。在那一个搜索过滤器是下拉年份值。下拉列表应包含从2000年到当年的年份。如果年份发生变化,它应该在下一年自动绑定。 我怎样才能做到这一点?
答案 0 :(得分: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。
编辑: 添加了当前年份的默认选择。
答案 1 :(得分:0)
利用Date.Today,您需要提供更多信息,但vb.net / C#中有很多变量引用当前年份。
Me.MyDropDownList.Items.FindByValue(CType(Today.Year,String))。Selected = True
[编辑部分]
以上是将值绑定到当前年份。只需注意,将这些年份存储在从2000年开始的数据库中直到说出一些最大数量然后再检索行可能是值得的:
SELECT TheYear FROM YourTable WHERE TheYear <= YEAR(GetDate())
那将是2000年至今年。这将使您的代码可重用,因为您可以将行绑定到某些数据集或数据控件。它还避免了在页面加载事件中出现奇怪的for循环。
只是一些想法!
答案 2 :(得分:0)
我完全相信你会得到什么,但我认为这很接近:
基本上有3个组件
asp:DropDownList id =“ddl1” ASP:SqlDataSource的 asp:GridViewControl
配置数据源以在WHERE子句中使用ddl1.SelectedValue。 (参数来源:Control,Value = ddl1.SelectedValue)
将网格视图绑定到DataSource
此时,获得所需内容的最简单方法是在ddl1上启用AutoPostBack,让魔法发生。