获取选定的值

时间:2018-11-14 05:32:30

标签: c# html asp.net .net

我喜欢为表格设置过滤器。这就是为什么我有一个下拉列表,并且当我按下按钮过滤器时它应该更改表格。按下按钮后,我进入方法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中获取该值,但那里的选定值也是默认值。

2 个答案:

答案 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左右。但是,如果多个项目都相同,它将无法正常工作。