dyarosh
asked on
Using an ASP.NET User Control
I am new to creating custom web controls and wanted to start with something simple so I am trying to create a DropDown List for State to be used on address forms.
I am able to set the initial value but when I change the value and try to retrieve it, I am getting the original value that the control was initialized to.
Here is my code for the control (StateUserControl.ascx)
Here is the code behind on the control:
Here is the code behind on my test page:
As you can see, I initialize the drop down to FL (Florida). Florida displays on the screen as expected.
When I select a different state such as Delaware, the screen shows Delaware but when I click on Submit to display the selected value, I get FL. I am expecting DE. Can someone tell me what I am doing wrong?
I am able to set the initial value but when I change the value and try to retrieve it, I am getting the original value that the control was initialized to.
Here is my code for the control (StateUserControl.ascx)
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="StateUserControl.ascx.cs" Inherits="CVL.StateUserControl" %>
<asp:DropDownList ID="StateDropDownList" ClientIDMode="Static" runat="server">
<asp:ListItem Value=""></asp:ListItem>
<asp:ListItem Value="AL">Alabama</asp:ListItem>
<asp:ListItem Value="AK">Alaska</asp:ListItem>
<asp:ListItem Value="AZ">Arizona</asp:ListItem>
<asp:ListItem value="AR">Arkansas</asp:ListItem>
<asp:ListItem value="CA">California</asp:ListItem>
<asp:ListItem value="CO">Colorado</asp:ListItem>
<asp:ListItem value="CT">Connecticut</asp:ListItem>
<asp:ListItem value="DE">Delaware</asp:ListItem>
<asp:ListItem value="DC">District of Columbia</asp:ListItem>
<asp:ListItem value="FL">Florida</asp:ListItem>
<asp:ListItem value="GA">Georgia</asp:ListItem>
<asp:ListItem value="HI">Hawaii</asp:ListItem>
<asp:ListItem value="ID">Idaho</asp:ListItem>
<asp:ListItem value="IL">Illinois</asp:ListItem>
<asp:ListItem value="IN">Indiana</asp:ListItem>
<asp:ListItem value="IA">Iowa</asp:ListItem>
<asp:ListItem value="KS">Kansas</asp:ListItem>
<asp:ListItem value="KY">Kentucky</asp:ListItem>
<asp:ListItem value="LA">Louisiana</asp:ListItem>
<asp:ListItem value="ME">Maine</asp:ListItem>
<asp:ListItem value="MD">Maryland</asp:ListItem>
<asp:ListItem value="MA">Massachusetts</asp:ListItem>
<asp:ListItem value="MI">Michigan</asp:ListItem>
<asp:ListItem value="MN">Minnesota</asp:ListItem>
<asp:ListItem value="MS">Mississippi</asp:ListItem>
<asp:ListItem value="MO">Missouri</asp:ListItem>
<asp:ListItem value="MT">Montana</asp:ListItem>
<asp:ListItem value="NE">Nebraska</asp:ListItem>
<asp:ListItem value="NV">Nevada</asp:ListItem>
<asp:ListItem value="NH">New Hampshire</asp:ListItem>
<asp:ListItem value="NJ">New Jersey</asp:ListItem>
<asp:ListItem value="NM">New Mexico</asp:ListItem>
<asp:ListItem value="NY">New York</asp:ListItem>
<asp:ListItem value="NC">North Carolina</asp:ListItem>
<asp:ListItem value="ND">North Dakota</asp:ListItem>
<asp:ListItem value="OH">Ohio</asp:ListItem>
<asp:ListItem value="OK">Oklahoma</asp:ListItem>
<asp:ListItem value="OR">Oregon</asp:ListItem>
<asp:ListItem value="PA">Pennsylvania</asp:ListItem>
<asp:ListItem value="RI">Rhode Island</asp:ListItem>
<asp:ListItem value="SC">South Carolina</asp:ListItem>
<asp:ListItem value="SD">South Dakota</asp:ListItem>
<asp:ListItem value="TN">Tennessee</asp:ListItem>
<asp:ListItem value="TX">Texas</asp:ListItem>
<asp:ListItem value="UT">Utah</asp:ListItem>
<asp:ListItem value="VT">Vermont</asp:ListItem>
<asp:ListItem value="VA">Virginia</asp:ListItem>
<asp:ListItem value="WA">Washington</asp:ListItem>
<asp:ListItem value="WV">West Virginia</asp:ListItem>
<asp:ListItem value="WI">Wisconsin</asp:ListItem>
<asp:ListItem value="WY">Wyoming</asp:ListItem>
</asp:DropDownList>
Here is the code behind on the control:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace CVL
{
public partial class StateUserControl : System.Web.UI.UserControl
{
public string StateName
{
get { return StateDropDownList.SelectedValue; }
set
{
StateDropDownList.ClearSelection();
StateDropDownList.Items.FindByValue(value).Selected = true;
}
}
}
}
Here is the code behind on my test page:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace CVL
{
public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
StateName.StateName = "FL";
}
protected void SaveBTN_Click(object sender, EventArgs e)
{
StatusLBL.Text = StateName.StateName;
}
}
}
As you can see, I initialize the drop down to FL (Florida). Florida displays on the screen as expected.
When I select a different state such as Delaware, the screen shows Delaware but when I click on Submit to display the selected value, I get FL. I am expecting DE. Can someone tell me what I am doing wrong?
The problem is that the user control is distroyed on postback along with any value.
I had a similar problem recently and these links helped.
http://stackoverflow.com/q uestions/5 425679/fin dcontrol-w ont-find-m y-dynamica lly-added- usercontro l
http://www.codeproject.com /Articles/ 59781/Dyna mic-Loadin g-of-ASP-N ET-User-Co ntrols
Andy
I had a similar problem recently and these links helped.
http://stackoverflow.com/q
http://www.codeproject.com
Andy
This is the original thead I posted, there are some other clues in there too.
http://www.experts-exchang e.com/Prog ramming/La nguages/.N ET/ASP.NET /Q_2796800 7.html
Andy
http://www.experts-exchang
Andy
ASKER
Thanks for the links but I am not loading my controls dynamically. All the controls are placed on the web page and are static. If I don't try and initialize the value of the DropDownList then everything works fine. It is only when I try and initialize the value that I run into the problem.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thank you. I didn't even realize I was missing that until you pointed it out. So dumb!!!
ASKER
StateDropDownList.Items.Fi
For some reason, this doens't allow me to get a differenct selected value.