C# 未设置DropDownList所选值
我使用两个下拉菜单来选择月份和年份,我制作了一个用户控件,我将这个控件放在一个中继器控件中。 我必须在其中显示从数据库中选择的值。例如,如果数据库中的日期为2014年5月,则应显示5月份月份的下拉列表和2014年的下拉列表。 我正在RowDatabound事件中执行此操作,但未选中它。 我就是这样做的C# 未设置DropDownList所选值,c#,asp.net,C#,Asp.net,我使用两个下拉菜单来选择月份和年份,我制作了一个用户控件,我将这个控件放在一个中继器控件中。 我必须在其中显示从数据库中选择的值。例如,如果数据库中的日期为2014年5月,则应显示5月份月份的下拉列表和2014年的下拉列表。 我正在RowDatabound事件中执行此操作,但未选中它。 我就是这样做的 var txtFrom = e.Item.FindControl("txfrom") as TextBox;//I will have values in mm/yyy var datefrom
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();
}
private void LoadMonthYear()
{
对于(inti=1;i,例如,当您在用户控件的下拉列表中放置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()));
}
}
protected void ddlu\u数据绑定(对象发送方,System.EventArgs e)
{
DropDownList ddl=(DropDownList)(发送方);
对于(int i=1;我猜您正在尝试在触发usercontrol中的Page\u Load
之前在下拉列表中选择值,因此此时没有可选择的项。请尝试将调用移动到LoadMonthYear()
进入您的页面\u Init
而不是此处的打字错误:var txtFrom=e.Item.FindControl(“txfrom”)作为文本框;
。您使用了txfrom而不是txtFrom。我会尝试从中继器的ItemDataBound处理程序中触发LoadMonthYear()。例如,var monthfrom=datefrom1.FindControl(“ddmonth”)作为DropDownList;monthfrom.LoadMonths()@Matthijs-its-txfrom-onrepeater@freefaller让我试试这将由我的用户控制?
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()));
}
}