【问题标题】:C# ASP.NET - Drop Down Lists storing current valueC# ASP.NET - 存储当前值的下拉列表
【发布时间】:2015-04-04 19:08:13
【问题描述】:

当我使用我的下拉列表并尝试存储我想要存储的值时。它只是像默认值一样存储(例如,我有一个从 2015 年到 2020 年的下拉列表。如果我选​​择 2018 年,它将传递回 2015 年的原始值)。

然后我尝试将我拥有的所有三个下拉列表(日月和年)合并到一个 DateTime 变量中。然而,一切都会回到默认状态。

protected void Page_Load(object sender, EventArgs e)
{
    int[] days = new int[31];

    for (int i = 0; i < days.Length; i++)
    {
        days[i] = i + 1;
    }
    //Binding the information to drop downlist.
    ddlDayCI.DataSource = days;
    ddlDayCI.DataBind();
    ddlDayCO.DataSource = days;
    ddlDayCO.DataBind();

    int[] months = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
    ddlMonthCI.DataSource = months;
    ddlMonthCI.DataBind();
    ddlMonthCO.DataSource = months;
    ddlMonthCO.DataBind();

    int[] years = new int[] { 2015, 2016, 2017, 2018, 2019, 2020 };

    ddlYearCI.DataSource = years;
    ddlYearCI.DataBind();
    ddlYearCO.DataSource = years;
    ddlYearCO.DataBind();
}
protected void CheckAvailability_Click(object sender, EventArgs e)
{
    int yearCI = Convert.ToInt32(ddlYearCI.SelectedItem.Value);
    int monthCI = Convert.ToInt32(ddlMonthCI.SelectedItem.Value);
    int dayCI = Convert.ToInt32(ddlDayCI.SelectedItem.Value);
    DateTime dateOfCheckIn = new DateTime(yearCI, monthCI, dayCI);

    int yearCO = Convert.ToInt32(ddlYearCO.SelectedItem.ToString());
    int monthCO = Convert.ToInt32(ddlMonthCO.SelectedItem.ToString());
    int dayCO = Convert.ToInt32(ddlDayCO.SelectedItem.ToString());
    DateTime dateOfCheckOut = new DateTime(yearCO, monthCO, dayCO);

    testing.Text = dateOfCheckIn.ToString();
}

有人能帮助我解决这个问题吗? testing.Text 只是一个输出我输入内容的标签,以防我忘记设置断点。

签入和签出值都会出现此问题。

谢谢

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    在page_load 中使用IsPostBack 事件

    尝试:

    protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
         {
            FillDropDowns();
         }
    }
    
    protected void FillDropDowns()
    {
       int[] days = new int[31];
    
        for (int i = 0; i < days.Length; i++)
        {
            days[i] = i + 1;
        }
        //Binding the information to drop downlist.
        ddlDayCI.DataSource = days;
        ddlDayCI.DataBind();
        ddlDayCO.DataSource = days;
        ddlDayCO.DataBind();
    
        int[] months = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
        ddlMonthCI.DataSource = months;
        ddlMonthCI.DataBind();
        ddlMonthCO.DataSource = months;
        ddlMonthCO.DataBind();
    
        int[] years = new int[] { 2015, 2016, 2017, 2018, 2019, 2020 };
    
        ddlYearCI.DataSource = years;
        ddlYearCI.DataBind();
        ddlYearCO.DataSource = years;
        ddlYearCO.DataBind();
    }
    

    【讨论】:

    • 谢谢它的工作。我从来没有意识到 IsPostBack 之前实际上做了什么,但我想这会用 1 块石头击中 2 只鸟。充分理解和利用 IsPostBack 并解决我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 2010-10-12
    • 1970-01-01
    相关资源
    最近更新 更多