Ask a Question related to ASP.NET Building Controls, Design and Development.
-
paul.hester@gmail.com #1
UserControl values lost on PostBack
Hi all,
I have a very simple user control that contains 3 drop downs. Whenever
there's a postback the values of these drop downs are lost. I've tried
enabling viewstate everywhere without success. Could anyone shed any
light on what's going wrong?
Thanks,
Paul
Asx:
<%@ Control Language="C#" EnableViewState="true" AutoEventWireup="true"
CodeFile="DayMonthYear.ascx.cs" Inherits="Test.DayMonthYear" %>
<%@ Register TagPrefix="test" Namespace="Test" %>
<table cellpadding="1" cellspacing="0">
<tr>
<td><small>Day</small></td>
<td><small>Month</small></td>
<td><small>Year</small></td>
</tr>
<tr>
<td><asp:DropDownList ID="day" EnableViewState="true"
runat="server"></asp:DropDownList></td>
<td><asp:DropDownList ID="month" EnableViewState="true"
runat="server"></asp:DropDownList></td>
<td><asp:DropDownList ID="year" EnableViewState="true"
runat="server"></asp:DropDownList></td>
</tr>
</table>
Asx.Cs:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace Test
{
public partial class DayMonthYear : System.Web.UI.UserControl,
INamingContainer
{
private int _yearHigh = DateTime.Now.Year;
private int _yearLow = DateTime.Now.Year - 100;
protected void Page_PreRender(object sender, EventArgs e)
{
string[] months = new string[] { "January", "February", "March",
"April", "May", "June", "July", "August", "September", "October",
"November", "December" };
// add days
day.Items.Add(new ListItem(string.Empty, "0"));
for (int i = 1; i < 32; i++)
day.Items.Add(i.ToString());
// add months
month.Items.Add(new ListItem(string.Empty, "0"));
for (int i = 0; i < months.Length; i++)
month.Items.Add(new ListItem(months[i], (i + 1) + string.Empty));
// add years
year.Items.Add(new ListItem(string.Empty, "0"));
for (int i = YearLow; i <= YearHigh; i++)
year.Items.Add(i.ToString());
}
public int YearHigh
{
get { return _yearHigh; }
set { _yearHigh = value; }
}
public int YearLow
{
get { return _yearLow; }
set { _yearLow = value; }
}
}
}
paul.hester@gmail.com Guest
-
UserControl with databound repeater drops values on postback
Hi all, I have a user control that contains a repeater that generates a list of check boxes. The checkboxes render fine, but they don't maintain... -
Usercontrol always needs a second postback
I folks, I have a simple page with a user control dropped on it, a textbox and a submit button. That usercontrol should display the value entered... -
Usercontrol Postback - can i intercept Request
Hi I have a site that creates a template file "default.aspx" and places usercontrols in it to display the pages. The beginrequest event redirects... -
PostBack and UserControl...events
Hello, You should create attribute for your UserControl. For example: DataKey ----------- WebUserControl1.ascx.cs ------------- public... -
Problem with UserControl Property in a DataGrid after Postback
Hello, I have this page.aspx ---------- <%@ Register TagPrefix="uc1" TagName="Userdetails" Src="Userdetails.ascx" %> ... <asp:datagrid... -
Riki #2
Re: UserControl values lost on PostBack
[email]paul.hester@gmail.com[/email] wrote:
If I understand your code well, you will get 12 months the first time,> Hi all,
>
> I have a very simple user control that contains 3 drop downs. Whenever
> there's a postback the values of these drop downs are lost. I've tried
> enabling viewstate everywhere without success. Could anyone shed any
> light on what's going wrong?
>
> Thanks,
>
> Paul
>
> Asx:
>
> <%@ Control Language="C#" EnableViewState="true"
> AutoEventWireup="true" CodeFile="DayMonthYear.ascx.cs"
> Inherits="Test.DayMonthYear" %> <%@ Register TagPrefix="test"
> Namespace="Test" %> <table cellpadding="1" cellspacing="0">
> <tr>
> <td><small>Day</small></td>
> <td><small>Month</small></td>
> <td><small>Year</small></td>
> </tr>
> <tr>
> <td><asp:DropDownList ID="day" EnableViewState="true"
> runat="server"></asp:DropDownList></td>
> <td><asp:DropDownList ID="month" EnableViewState="true"
> runat="server"></asp:DropDownList></td>
> <td><asp:DropDownList ID="year" EnableViewState="true"
> runat="server"></asp:DropDownList></td>
> </tr>
> </table>
>
> Asx.Cs:
>
> using System;
> using System.Data;
> using System.Configuration;
> using System.Collections;
> using System.Web;
> using System.Web.Security;
> using System.Web.UI;
> using System.Web.UI.WebControls;
> using System.Web.UI.WebControls.WebParts;
> using System.Web.UI.HtmlControls;
>
> namespace Test
> {
> public partial class DayMonthYear : System.Web.UI.UserControl,
> INamingContainer
> {
> private int _yearHigh = DateTime.Now.Year;
> private int _yearLow = DateTime.Now.Year - 100;
>
> protected void Page_PreRender(object sender, EventArgs e)
> {
> string[] months = new string[] { "January", "February", "March",
> "April", "May", "June", "July", "August", "September", "October",
> "November", "December" };
>
> // add days
> day.Items.Add(new ListItem(string.Empty, "0"));
> for (int i = 1; i < 32; i++)
> day.Items.Add(i.ToString());
>
> // add months
> month.Items.Add(new ListItem(string.Empty, "0"));
> for (int i = 0; i < months.Length; i++)
> month.Items.Add(new ListItem(months[i], (i + 1) + string.Empty));
>
> // add years
> year.Items.Add(new ListItem(string.Empty, "0"));
> for (int i = YearLow; i <= YearHigh; i++)
> year.Items.Add(i.ToString());
> }
>
> public int YearHigh
> {
> get { return _yearHigh; }
> set { _yearHigh = value; }
> }
>
> public int YearLow
> {
> get { return _yearLow; }
> set { _yearLow = value; }
> }
> }
> }
24 after the first postback etc.
If so, in Pre_Render, use an if(!Page.IsPostBack) block for adding the
items. In other words, don't add items on postback again.
--
Riki
Riki Guest



Reply With Quote

