从下拉列表中捕获值,其中显示下拉列表不是默认值

Ari*_*Naj 5 c# asp.net data-binding dropdown

我想在我的DropDown列表中捕获所选日期,其中将显示五天DropdownList.

我通常会设置默认值DropDown,但不是这次,因为在下拉列表中我希望它始终显示当前日期和接下来的五天.但我不知道如何捕获数据.

<asp:DropDownList ID="ddldate" runat="server">
</asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)
protected void Page_Load(object sender, EventArgs e)
{
    List<ListItem> items = new List<ListItem>();

    for (int i = 0; i < 5; i++)
    {
        items.Add(new ListItem(
          DateTime.Now.AddDays(i).ToShortDateString(), 
          DateTime.Now.AddDays(i).ToShortDateString()));
    }
    ddldate.DataSource = items;
    ddldate.DataBind();
    ddldate.Items[0].Selected = true;
}
Run Code Online (Sandbox Code Playgroud)
protected void Button1_Click(object sender, EventArgs e)
{
    string deliverytime = ddldate.SelectedValue.ToString();
    lbltest.Text = deliverytime;
}
Run Code Online (Sandbox Code Playgroud)

Sia*_*ash 5

您不应该绑定数据PostBack,将FormLoad代码更改为以下示例:

protected void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostBack)
    {
        List<ListItem> items = new List<ListItem>();

        for (int i = 0; i < 5; i++)
        {
            items.Add(new ListItem(DateTime.Now.AddDays(i).ToShortDateString(), DateTime.Now.AddDays(i).ToShortDateString()));
        }
        ddldate.DataSource = items;
        ddldate.DataBind();
        ddldate.Items[0].Selected = true;
    }   
}
Run Code Online (Sandbox Code Playgroud)

如果您将该PostBack属性视为条件,您SelectedValue将保留,否则DropDown将绑定在每个页面上.

我还建议你SelectedValue在使用之前检查状态,如果这样做,不要尝试获取值null,请检查以下代码:

protected void Button1_Click(object sender, EventArgs e)
{
    if(ddldate.SelectedValue != null)
    {
        string deliverytime = ddldate.SelectedValue.ToString();
        lbltest.Text = deliverytime;
    }
}
Run Code Online (Sandbox Code Playgroud)


Tet*_*oto 5

您正在DropDownList为每个回发重新填充并重新加载页面,因此SelectedValue属性值可能与发布的值不同.只需检查IsPostBack以防止DropDownList在回发时重新填充数据:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        List<ListItem> items = new List<ListItem>();

        for (int i = 0; i < 5; i++)
        {
           items.Add(new ListItem(DateTime.Now.AddDays(i).ToShortDateString(), DateTime.Now.AddDays(i).ToShortDateString()));
        }

        ddldate.DataSource = items;
        ddldate.DataBind();
        ddldate.Items[0].Selected = true;
    }
}
Run Code Online (Sandbox Code Playgroud)