Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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
C# Asp.net下拉列表默认值未出现_C#_Asp.net_Drop Down Menu - Fatal编程技术网

C# Asp.net下拉列表默认值未出现

C# Asp.net下拉列表默认值未出现,c#,asp.net,drop-down-menu,C#,Asp.net,Drop Down Menu,我用这种方式绑定了一个下拉列表: protected void Page_Load(object sender, EventArgs e) { //Can't write !Page.IsPostBack because this is a User control which doesn't //exist at page load if (ddlConditionType.Items.Count == 0) PopulateDDL(); } p

我用这种方式绑定了一个下拉列表:

protected void Page_Load(object sender, EventArgs e)
{
    //Can't write !Page.IsPostBack because this is a User control which doesn't  
    //exist at page load
    if (ddlConditionType.Items.Count == 0)  
        PopulateDDL();
}
private void PopulateDDL()
{
    MyDdl.DataSource = MyObjectList; //Containing A, B, C
    MyDdl.DataBind();
    MyDdl.Items.Insert(0, new ListItem(String.Empty, String.Empty));
}
预期结果将包含以下项目的下拉列表:

字符串。空 A. B C 或者实际结果是

A. B C 我已将AppendDataBoundItems设置为true,结果如下:

字符串。空 A. B C A. B C 看起来它是第一次绑定ddl,添加该项,然后再次绑定它。当然,如果我再次绑定ddl,我的项目中就没有其他地方了

目前,我找到了一个解决方法,如下所示:

MyObjectList.Insert(0,new MyObject()); //Which will result in a empty ddl item 
MyDdl.DataSource = MyObjectList;
MyDdl.DataBind();

我想了解那里发生了什么。

在数据绑定之前使用Clear方法

MyDdl.Items.Clear();
你把下拉列表绑在哪里?在页面上加载? 如果要在页面加载时绑定下拉列表,请检查回发状态:

if (!Page.IsPostBack)
{
    MyDdl.DataSource = MyObjectList; //Containing A, B, C
    MyDdl.DataBind();
    MyDdl.Items.Insert(0, new ListItem(String.Empty, String.Empty));
}

嗨,发生这种情况是因为你没有像这样把你的方法放在回发中

    if (!IsPostBack)
    {

      PopulateDDL();
    }
在您的页面:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
            MyUserControl.PopulateDDL();
    }
}
由用户控制

public void PopulateDDL()
{
    MyDdl.DataSource = MyObjectList; //Containing A, B, C
    MyDdl.DataBind();
    MyDdl.Items.Insert(0, new ListItem(String.Empty, String.Empty));
}

在哪种情况下执行该代码?你能显示整个事件代码吗?ddl在一个用户控件中,我在Page_load事件中加载它。查看编辑。我已尝试使用MyDdl.Items.Clear;但它没有起作用。ddl位于用户控件中,因此我无法检查Page.IsPostBack,因为第一次加载页面时ddl不存在,因此我有if-ddlConditionType.Items.Count==0PopulateDDL。