Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在usercontrol中的Dropdownlist中设置所选索引_Asp.net_Visual Studio_User Controls - Fatal编程技术网

Asp.net 在usercontrol中的Dropdownlist中设置所选索引

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

我对用户控件相当陌生。到目前为止,我发现它们对于处理大量重复的用户输入字段非常有用。但是,我在控件中预填充dropdownlist时遇到问题。我将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)); }
}
该程序旨在显示空的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)); }
}