2

I am lazy - and I am using a SQLDataSource to populate my dropdownLists.

The Databind event for the databound objects is called before the Page.PreRender so I am doing something like this in the PreRender eventHandler:

private void InitializeDropDown()
        {
            this.myDropDown.Items.Insert(0, new ListItem("-- Select something --"));
        }

I know I can set AppendDataBound items to true and hardcode my custom item in the markup but before reverting to that I'd like to understand why what I am doing is not working.

It usually works when I bind stuff dynamically like this:

myDropDown.DataTextField = "whatever";
myDropDown.DataValueField = "ID";
myDropDown.DataSource = GetStuff();
myDropDown.DataBind();
myDropDown.Items.Insert(0, "-- Select something --");

What I am doing should be equivalent - only difference is I am using a SQLDataSource.

Any help appreciated!

2 Answers 2

4

Put your insert line on the OnSelected method of the datasource

myDropDown.Items.Insert(0, "-- Select something --");

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sqldatasource.selected.aspx

Sign up to request clarification or add additional context in comments.

1 Comment

nice - so basically that's the only way of doing it programmatically with a sqlDataSource? I still dont understand why if I bind it dynamically I can call Insert right after the Databind call. What's the difference between what I am doing and handling the OnSelected method of the SqlDataSource?
4

I set AppendDataBoundItems="true" for the dropDwonList and it works like charme! I thought it was supposed to be used only in presence of hardcoded list items in the markup. I was wrong.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.