DropDownList选择的值未设置

时间:2014-04-24 10:53:53

标签: c# asp.net

我正在使用两个下拉菜单进行月份和年份选择,我已经建立了一个用户控件,我在转发器控件中有这个控件。 我必须在其中显示数据库中的选定值。例如,如果在数据库中它是5/2014那么它应该显示月份下降和2014年下降。 我在RowDatabound事件中这样做,但它没有被选中。 这就是我在做的事情

var txtFrom = e.Item.FindControl("txfrom") as TextBox;//I will have values in mm/yyy
var datefrom = e.Item.FindControl("ddempfrom") as CutomControls.MonthYearPicker;
var monthfrom = datefrom1.FindControl("ddmonth") as DropDownList;
var yearfrom = datefrom1.FindControl("ddyear") as DropDownList;

monthfrom.SelectedValue=txtFrom.Text.Split('/')[0];
yearfrom .SelectedValue=txtFrom.Text.Split('/')[1];

这就是我在UserControl中制作下拉列表的方法

private void LoadMonthYear()
{
    for (int i = 1; i <= 12; i++)
    {
        DateTime date = new DateTime(1900, i, 1);
        ddmonth.Items.Add(new System.Web.UI.WebControls.ListItem(date.ToString("MMMM"), i.ToString()));
    }

    var currentYear = DateTime.Now;
    for (int i = 1900; i <= Convert.ToInt32(currentYear.ToString("yyyy")); i++)
    {
        ddyear.Items.Add(new System.Web.UI.WebControls.ListItem(i.ToString(), i.ToString()));
    }   
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    LoadMonthYear();
}

我尝试调试,当断点到达我设置选定值的行时,在转到下一行后,selectedvalue显示为空白

我的DropDown列表

<asp:DropDownList ID="ddmonth" runat="server">
</asp:DropDownList>
-
<asp:DropDownList ID="ddyear" runat="server">
</asp:DropDownList>

更新:我注意到RowDataBound首先击中,然后用户控件的Page_Load正在等待

1 个答案:

答案 0 :(得分:0)

例如,当您在用户控件的下拉列表中放置一个OnDataBinding事件处理程序

<asp:DropDownList ID="ddlMonth" runat="server" OnDataBinding="ddlMonth_DataBinding">
</asp:DropDownList>

<asp:DropDownList ID="ddyear" runat="server" OnDataBinding="ddlYear_DataBinding">
</asp:DropDownList>

然后在用户控件的代码中创建事件处理程序

protected void ddlMonth_DataBinding(object sender, System.EventArgs e)
{
    DropDownList ddl = (DropDownList)(sender);
    for (int i = 1; i <= 12; i++)
        {
            DateTime date = new DateTime(1900, i, 1);
            ddl.Items.Add(newSystem.Web.UI.WebControls.ListItem(date.ToString("MMMM"), i.ToString()));
        }
}

protected void ddlYear_DataBinding(object sender, System.EventArgs e)
{
    DropDownList ddl = (DropDownList)(sender);
    var currentYear = DateTime.Now;
    for (int i = 1900; i <= Convert.ToInt32(currentYear.ToString("yyyy")); i++)
    {
        ddl.Items.Add(new System.Web.UI.WebControls.ListItem(i.ToString(), i.ToString()));
    }   
}

}

之后,您可以在转发器OnItemDataBound事件

中设置下拉值