Asp.net 在usercontrol中的Dropdownlist中设置所选索引
我对用户控件相当陌生。到目前为止,我发现它们对于处理大量重复的用户输入字段非常有用。但是,我在控件中预填充dropdownlist时遇到问题。我将ddl添加到我的ascx页面,然后绑定ddl并公开它:Asp.net 在usercontrol中的Dropdownlist中设置所选索引,asp.net,visual-studio,user-controls,Asp.net,Visual Studio,User Controls,我对用户控件相当陌生。到目前为止,我发现它们对于处理大量重复的用户输入字段非常有用。但是,我在控件中预填充dropdownlist时遇到问题。我将ddl添加到我的ascx页面,然后绑定ddl并公开它: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { List<Travel_CarSize> tc = Travel_CarSizes.GetCarSizes
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)); }
}
该程序旨在显示空的usercontrol(带有数据绑定ddl)和gridview。用户选择一个gridview条目,该usercontrol将被数据填充。因此,ddl从一开始就被绑定,然后发生导致“预选”ddl的事件
当这没有给出我想要的结果时,我在if(!IsPostBack)上放置了一个断点,即ddlCarSize.DataBind();和集合{}。我运行程序,它绑定我的ddl,然后在gridview中进行选择。当我点击select时,我发现它点击了usercontrol中的if(!IsPostBack),并说“哦,这是回发,不要进入if。”然后它点击了集合{},但ddl现在是空的。然后它再次点击if(!IsPostBack),出于某种原因,现在它说它不是回发,并重新绑定ddl
我认为这是一个相当普遍的问题,但我还没有找到解决办法。任何帮助都将不胜感激。受保护的无效页面\u加载(对象发送者,事件参数e)
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Bind()
}
}
public Bind()
{
if (ddlCarSize.Items.Count == 0)
{
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
{
Bind();
ddlCarSize.SelectedIndex = ddlCarSize.Items.IndexOf(ddlCarSize.Items.FindByValue(value)); }
}
{
如果(!IsPostBack)
{
绑定()
}
}
公共绑定()
{
if(ddlCarSize.Items.Count==0)
{
列表tc=旅行车尺寸。GetCarSizes();
ddlCarSize.DataSource=tc;
ddlCarSize.DataTextField=“CarSize”;
ddlCarSize.DataValueField=“CarSizeID”;
ddlCarSize.DataBind();
}
}
公共字符串大小
{
获取{返回ddlCarSize.SelectedValue.ToString();}
设置
{
Bind();
ddlCarSize.SelectedIndex=ddlCarSize.Items.IndexOf(ddlCarSize.Items.FindByValue(value));}
}
Hunter,你是我新的个人英雄。这是一个如此简单的解决方案,我从未想过。非常感谢。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Bind()
}
}
public Bind()
{
if (ddlCarSize.Items.Count == 0)
{
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
{
Bind();
ddlCarSize.SelectedIndex = ddlCarSize.Items.IndexOf(ddlCarSize.Items.FindByValue(value)); }
}