设置从数据库填充的下拉列表的默认值

时间:2013-12-24 05:49:39

标签: c# asp.net

我正在填写数据库中的下拉列表,但我想将“选择项目”添加到下拉列表中,并将其设为默认选项: 我试图设置writerddl.SelectedValue = "please...";,但运行时错误说:

  

'writerddl'有一个无效的SelectedValue,因为它没有   存在于项目列表中。参数名称:值

这是我的代码:

protected void Page_Load(object sender, EventArgs e)
{
writerddl.SelectedValue = "please...";
if (!IsPostBack)
  {
   writerddl.DataSource = DS.show_all_writers();
   writerddl.DataValueField = "writerid";
   writerddl.DataTextField = "writersname";            
   writerddl.DataBind();
  }
}

3 个答案:

答案 0 :(得分:4)

试试这段代码。

protected void Page_Load(object sender, EventArgs e)
{       
   if (!IsPostBack)
   {
       writerddl.DataSource = DS.show_all_writers();
       writerddl.DataValueField = "writerid";
       writerddl.DataTextField = "writersname";            
       writerddl.DataBind();
       writerddl.Items.insert(0, new ListItem("Please select",""));
   }
}

答案 1 :(得分:1)

删除它:

writerddl.SelectedValue = "please...";

并使用此:

//....    
writerddl.DataBind();
writerddl.Items.Insert(0, "please...");
//...

更新:

使用像这样的Clear()方法:

protected void Page_Load(object sender, EventArgs e)
{  
   writerddl.Items.Clear();
   writerddl.DataSource = DS.show_all_writers();
   writerddl.DataValueField = "writerid";
   writerddl.DataTextField = "writersname";            
   writerddl.DataBind();
   writerddl.Items.Insert(0, "please...");
}

答案 2 :(得分:-1)

使用以下代码。请注意,选定值行在下方移动,这会产生差异。希望下拉列表中存在值为“please ...”的项目。

 protected void Page_Load(object sender, EventArgs e)
    {           
        if (!IsPostBack)
        {
            writerddl.DataSource = DS.show_all_writers();
            writerddl.DataValueField = "writerid";
            writerddl.DataTextField = "writersname";
            writerddl.DataBind();
            writerddl.SelectedValue = "please...";
        }

    }

更新 “希望带有价值的物品”请...“存在于下拉列表中”将此行更改为“希望带有值的项目”请...“存在于绑定源中”。

更新1:     如果来源没有项目“请...”,这里是以下代码。     protected void Page_Load(object sender,EventArgs e)     {

    if (!IsPostBack)
    {
        writerddl.Items.Add(new ListItem("Select An Item", "please..."));
        writerddl.DataSource = DS.show_all_writers();
        writerddl.DataValueField = "writerid";
        writerddl.DataTextField = "writersname";
        writerddl.DataBind();
        writerddl.SelectedValue = "please...";
    }

}