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)
您不应该绑定数据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)
您正在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)