【问题标题】:Asp.net dropdown list default value not appearingAsp.net 下拉列表默认值未出现
【发布时间】: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


【解决方案1】:

在数据绑定之前使用清除方法,

MyDdl.Items.Clear();

你在哪里绑定下拉菜单?在 page_load 上? 如果你想在 Page_Load 绑定你的下拉列表,你必须检查回发状态:

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

【讨论】:

  • 我试过MyDdl.Items.Clear();,但没有成功。并且 ddl 在用户控件中,所以我无法检查 Page.IsPostBack,因为第一次加载页面时 ddl 不存在,所以我有 if (ddlConditionType.Items.Count == 0)PopulateDDL()
【解决方案2】:

您好,发生这种情况是因为您没有像这样将您的方法放入回发中

    if (!IsPostBack)
    {

      PopulateDDL();
    }

【讨论】:

    【解决方案3】:

    在您的页面上:

    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));
    }
    

    【讨论】:

      猜你喜欢
      • 2016-11-16
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 1970-01-01
      相关资源
      最近更新 更多