Reputation: 245
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
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
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
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