我喜欢为表格设置过滤器。这就是为什么我有一个下拉列表,并且当我按下按钮过滤器时它应该更改表格。按下按钮后,我进入方法btnFilter_Click。当我尝试从下拉列表中获取选定的值时,我得到的是defaut值(“下拉列表”中最后插入的值),而不是我之前选择的值。
HTML:
<div class="col-sm-9">
<asp:DropDownList runat="server" ID="ddlYearForProject" CssClass="form-control">
</asp:DropDownList>
</div>
C#:
Page_Load:
if(!IsPostback){
if (ddlYearForProject.Items.Count == 0)
{
ddlYearForProject.Items.Insert(0, new ListItem(DateTime.Today.AddYears(-3).Year.ToString(), string.Empty));
ddlYearForProject.Items.Insert(0, new ListItem(DateTime.Today.AddYears(-2).Year.ToString(), string.Empty));
ddlYearForProject.Items.Insert(0, new ListItem(DateTime.Today.AddYears(-1).Year.ToString(), string.Empty));
ddlYearForProject.Items.Insert(0, new ListItem(DateTime.Today.Year.ToString(), string.Empty));
}
}
btnFilter_Click:
stringYear = ddlYearForProject.SelectedItem.Text;
我也尝试在page_Load中获取该值,但那里的选定值也是默认值。
答案 0 :(得分:0)
在页面加载中进行此更新。
if (!IsPostBack)
{
if (ddlYearForProject.Items.Count == 0)
{
ddlYearForProject.Items.Insert(0, new ListItem(DateTime.Today.AddYears(-3).Year.ToString(), string.Empty));
ddlYearForProject.Items.Insert(0, new ListItem(DateTime.Today.AddYears(-2).Year.ToString(), string.Empty));
ddlYearForProject.Items.Insert(0, new ListItem(DateTime.Today.AddYears(-1).Year.ToString(), string.Empty));
ddlYearForProject.Items.Insert(0, new ListItem(DateTime.Today.Year.ToString(), string.Empty));
}
}
答案 1 :(得分:0)
您的问题出在字符串中。您的所有值都为空,这是下拉列表用来标识所选项目的地方。
更改
ddlYearForProject.Items.Insert(0, new ListItem(DateTime.Today.AddYears(-1).Year.ToString(), string.Empty));
到
ddlYearForProject.Items.Insert(0, new ListItem(DateTime.Today.AddYears(-1).Year.ToString(), DateTime.Today.AddYears(-1).Year.ToString()));
这将为下拉列表提供文本和值。或者,您可以使用其他唯一值,例如int左右。但是,如果多个项目都相同,它将无法正常工作。