【发布时间】:2013-11-04 18:16:24
【问题描述】:
我有一个以这种方式绑定的下拉列表:
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));
}
预期的结果是包含这些项目的下拉列表:
- String.Empty
- 一个
- B
- C
或者实际结果是
- 一个
- B
- C
我设置了AppendDataBoundItems = true,结果如下:
- String.Empty
- 一个
- B
- C
- 一个
- B
- C
看起来它是第一次绑定 ddl,添加项目,然后再次重新绑定。当然,如果我第二次绑定 ddl,我的项目中就没有其他地方了。
目前我找到了一个解决方法,如下所示:
MyObjectList.Insert(0,new MyObject()); //Which will result in a empty ddl item
MyDdl.DataSource = MyObjectList;
MyDdl.DataBind();
我想了解那里发生了什么。
【问题讨论】:
-
您在什么情况下执行该代码?你能显示整个事件代码吗?
-
ddl 在用户控件中,我在 Page_Load 事件中加载它。查看编辑。
标签: c# asp.net drop-down-menu