When working with ASP.NET WebForms, it's common to use DropDownList controls to allow users to select a status or category. Often, we want a default value to be selected when the page first loads, and we may want to filter data (such as a GridView) based on this selection.
Depending on whether your dropdown is static (hardcoded) or dynamic (loaded from a database), the approach differs slightly.
Scenario 1: Static DropDownList
A static dropdown is defined directly in the ASPX markup with predefined items.
ASPX Markup
<asp:DropDownList ID="DrpPayment" runat="server" CssClass="table_drp_dwn_full txtBoldnew">
<asp:ListItem Text="Select Status" Value="" />
<asp:ListItem Text="New" Value="New" />
<asp:ListItem Text="Pending" Value="Pending" />
<asp:ListItem Text="In progress" Value="In progress" />
</asp:DropDownList>
Set a Default Value in Code-Behind
In the Page_Load method, you can set a default value when the page first loads.
Code-Behind
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// Set "New" as the default selected value
if (DrpPayment.Items.FindByValue("New") != null)
{
DrpPayment.SelectedValue = "New";
}
// Bind your grid or other controls based on the default value
BindData();
}
}
Key Points
Use !IsPostBack to ensure the default value is set only on the initial page load.
This prevents overwriting the user's selection during postbacks.
Use Items.FindByValue() before setting SelectedValue to avoid runtime errors if the value does not exist.
Call BindData() after setting the default value so that dependent controls are filtered correctly.
Scenario 2: Dynamic DropDownList
A dynamic dropdown is populated from a database or another data source.
In this case, you must bind the data first and then set the default value.
Code Example
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// Bind the dropdown to a data source
DrpPayment.DataSource = GetPaymentStatusFromDB(); // Replace with your data retrieval method
DrpPayment.DataTextField = "StatusText"; // Column name to display
DrpPayment.DataValueField = "StatusValue"; // Column name for the value
DrpPayment.DataBind();
// Set default after binding
if (DrpPayment.Items.FindByValue("New") != null)
{
DrpPayment.SelectedValue = "New";
}
// Bind your grid or other dependent controls
BindData();
}
}
Important Notes
Always Bind First
SelectedValue will not work if the dropdown does not contain any items.
Incorrect:
DrpPayment.SelectedValue = "New";
DrpPayment.DataBind();
Correct:
DrpPayment.DataBind();
DrpPayment.SelectedValue = "New";
Set the Default Value After Binding
The dropdown must contain the target item before you can select it.
Use AutoPostBack When Needed
If you want a grid or other controls to refresh automatically when the selected value changes, enable AutoPostBack.
<asp:DropDownList ID="DrpPayment"
runat="server"
AutoPostBack="true">
</asp:DropDownList>
Common Mistakes
Setting SelectedValue Before Binding
Incorrect:
DrpPayment.SelectedValue = "New";
DrpPayment.DataBind();
This may fail because the dropdown items have not yet been loaded.
Resetting the Value on Every Postback
Incorrect:
protected void Page_Load(object sender, EventArgs e)
{
DrpPayment.SelectedValue = "New";
}
This will overwrite the user's selection every time the page posts back.
Correct Approach
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DrpPayment.SelectedValue = "New";
}
}
Static vs Dynamic DropDownList
| Feature | Static Dropdown | Dynamic Dropdown |
|---|
| Define items | Hardcoded in ASPX | Loaded from database or API |
| Default value | Set in !IsPostBack | Bind first, then set in !IsPostBack |
| Bind dependent controls | After setting default | After setting default |
| Common mistake | Overwriting value on postback | Setting SelectedValue before binding |
Best Practices
Always wrap initialization code inside !IsPostBack.
Verify the item exists using FindByValue() before selecting it.
Bind data before setting SelectedValue for dynamic dropdowns.
Refresh dependent controls only after the correct value is selected.
Use AutoPostBack when user selections should immediately trigger updates.
Summary
Setting a default value in an ASP.NET DropDownList is straightforward once you understand the difference between static and dynamic dropdowns. For static dropdowns, simply set the SelectedValue inside !IsPostBack. For dynamic dropdowns, bind the data source first and then set the selected value. Following these practices ensures the correct item is selected on page load while preserving user selections during postbacks and keeping dependent controls properly synchronized.