我对用户控件相当陌生。到目前为止,我发现它们对于处理大量重复的用户输入字段非常有用。但是,我在控件中预填充下拉列表时遇到问题。我一个DDL添加到我的ascx页面,然后我绑定的DDL和揭露它:在usercontrol的下拉列表中设置选定的索引
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<Travel_CarSize> tc = Travel_CarSizes.GetCarSizes();
ddlCarSize.DataSource = tc;
ddlCarSize.DataTextField = "CarSize";
ddlCarSize.DataValueField = "CarSizeID";
ddlCarSize.DataBind();
}
}
public string CarSize
{
get { return ddlCarSize.SelectedValue.ToString(); }
set { ddlCarSize.SelectedIndex = ddlCarSize.Items.IndexOf(ddlCarSize.Items.FindByValue(value)); }
}
然而,当我编程尝试设置选择在控制我总是最后设置它,然后结合它的DDL。在我的aspx.cs文件I设置:
CarControl1.CarSize = "3";
该计划的目的是显示一个空的用户控件(与数据绑定DDL)和一个gridview。用户选择一个GridView条目,并且该用户控件获取数据。因此,ddl从一开始就受到约束,然后发生导致“预选”ddl的事件。
当这并没有给我我找的结果我把一个断点放在if(!IsPostBack),ddlCarSize.DataBind();和集合{}。我运行该程序,它绑定我的ddl,并在gridview中做出选择。当我点击select时,我发现它碰到了usercontrol中的if(!IsPostBack),并且说:“哦,这是回传,不要进入if。”那么它会击中set {},但ddl现在是空的。然后它再次击中if(!IsPostBack),并由于某种原因现在说它不是回发并重新绑定ddl。
我认为这是一个很常见的问题,但我还没有找到解决方案。任何帮助将不胜感激。
猎人,你是我的新个人英雄。这是一个简单的解决方案,它从来没有跨过我的脑海。谢谢。 – Jeremy 2010-11-11 15:45:08
很高兴我能帮忙! – hunter 2010-11-11 16:14:08