Aya Mohammad
Aya Mohammad

Reputation: 245

Set a default value for my dropdownlist which is filled from database

I'm filling my dropdownlist from database but I want to add "select an item please" to the dropdown along with others and make it default selected item :
I tried to setwriterddl.SelectedValue = "please...";but a runtime error says:

'writerddl' has a SelectedValue which is invalid because it does not exist in the list of items. Parameter name: value

and here is my code:

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

Upvotes: 3

Views: 3069

Answers (3)

Naveen
Naveen

Reputation: 1502

Use the below code. Note the selected-value line moved below and that makes difference. Hope the item with Value "please..." exists in the dropdown.

 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...";
        }

    }

Update : "Hope the item with Value "please..." exists in the dropdown" changing this line to "Hope the item with Value "please..." exists in the binding source".

Update 1: If the source don't have item "please..." here is the below code. 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...";
    }

}

Upvotes: -1

Samiey Mehdi
Samiey Mehdi

Reputation: 9424

Remove this:

writerddl.SelectedValue = "please...";

and use this:

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

Update:

use Clear() method like this:

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

Upvotes: 1

Raghubar
Raghubar

Reputation: 2788

Try this code.

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

Upvotes: 4

Related Questions