【发布时间】:2010-11-11 15:26:45
【问题描述】:
我对用户控件相当陌生。到目前为止,我发现它们对于处理大量重复的用户输入字段非常有用。但是,我在控件中预填充下拉列表时遇到问题。我将 ddl 添加到我的 ascx 页面,然后绑定 ddl 并将其公开:
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 文件中我设置:
CarControl1.CarSize = "3";
该程序旨在显示一个空的用户控件(带有数据绑定 ddl)和一个网格视图。用户选择一个 gridview 条目,该用户控件被数据填充。因此,ddl 从一开始就被绑定,然后发生导致“预选”ddl 的事件。
当这没有给我想要的结果时,我在 if(!IsPostBack)、ddlCarSize.DataBind(); 上放置了一个断点。和集合{}。我运行程序,它绑定了我的 ddl,然后我在 gridview 中进行了选择。当我单击选择时,我发现它点击了用户控件中的 if(!IsPostBack) 并说“哦,这是回发,不要进入 if。”然后它命中 set{} 但 ddl 现在是空的。然后它再次点击 if(!IsPostBack) 并且由于某种原因现在说它不是回发并重新绑定 ddl。
我认为这是一个很常见的问题,但我还没有找到解决方案。任何帮助将不胜感激。
【问题讨论】:
标签: asp.net visual-studio user-controls