我正在使用两个下拉菜单进行月份和年份选择,我已经建立了一个用户控件,我在转发器控件中有这个控件。 我必须在其中显示数据库中的选定值。例如,如果在数据库中它是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
正在等待
答案 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事件
中设置下拉值