I stored a object in viewstate on Page. Now when i access the same viewsate object on usercontrol,it shows as null. I even tried creating the same viewstate with same name in usercontrol and page.Both holds different value. I understand that viewstate is a protected property. How does this thing implement in above scenerio or is there any other reason for this behaviour.
Edit:
Usercontrol is there in the page markup. I am not loading it dynamically. I have a page EditFacilityworkType.aspx. On page I have a usercontrol FacilityWorkTypeDetails.aspx(FacilityWorkTypeDetails1). Inside this usercontrol i have a user control Workflow.aspx(Workflow1)
Page_Load() of Page I am retrieving workflowdetails on page_load() of page.
FacilityWorktype facilityWorkType = facilityDetails.GetFacilityWorktypeDetail(SessionHelper.FacilityWorkTypeID);
ViewState["WorkFlow"] = facilityWorkType.FacilityWorkTypeWorkFlow
Inside usercontrol FacilityWorkTypeDetails.aspx. I have a property
public FacilityWorktype FacilityWorkTypeDetails
{
get
{
#region Fill FacilityWorktype
return GetEntityFromControl();
#endregion
}
set
{
PopulateControls(value);
}
}
Now i set this property in page load of page
FacilityWorkTypeDetails1.FacilityWorkTypeDetails = facilityWorkType;
Inside Workflow.aspx, I have a property
/// <summary>
/// Property to fill entity object from controls on this page
/// </summary>
public WorkFlow WorkFlowDetails
{
get
{
return GetEntityFromControls();
}
set
{
BindTranscriptionMethodDDL(ddlTranscMethod);
PopulateControls(value);
}
}
Now PopulateControls() of FacilityWorkTypeDetails1, i am setting property of workflow1
private void PopulateControls(FacilityWorktype value)
{
Workflow1.WorkFlowDetails = value.FacilityWorkTypeWorkFlow;
}
Now when i am retrieving values from
private WorkFlow GetEntityFromControls()
{
WorkFlow workFlow = (ViewState["WorkFlow"] as WorkFlow) ?? new WorkFlow();
//workFlow is null
}
So now inside this function workFlow is null. I want to ask,why is it null when i have set viewstate in page.
How do I access the Control (dropdownlist) in current Page from the UserControl? In the UserControl:
String test = ((DropDownList)this.Parent.FindControl("drpdwnlstMainRegion")).SelectedValue; or String test = ((DropDownList)this.Page.FindControl("drpdwnlstMainRegion")).SelectedValue;
It return null on ((DropDownList)this.Parent.FindControl("drpdwnlstMainRegion")) for some reason? BTW ... I am using ASP.NET C# 3.5.
I've created user control named test.ascs with one textbox. Now I added this user control in my default.aspx page. How can i access that textbox value from my default.aspx page?
i have 2 textbox controls inside a usercontrol TextBoxUC.ascx i have a page.aspx that contains the usercontrol. how can i get a reference to each textbox using javascript from page.aspx?
I have a usercontrol on the content page. I'm trying to access this usercontrol's hiddenfield.
I was able to access it before applying the master Page. But once I changed the page to a content page , the value in the hiddenfield is showing empty.
alert(document.getElementById('<%=hidLat.clientID%>').value) is showing the value.
I have a property PickupHidLat defined on the ascx page and I'm using this property to access hidLat value on the content page.
Is there a way to access viewstate of a page in another page ?Please elaborate the answer to clear my doubts as I think ViewState has it's scope to the page only and can't be accessed outside page.
At my user-control I populate listbox with collection and want save data in viewstatecontrolstate for further autopostback using.
protected void btFind_Click(object sender, EventArgs e) { var accounts = new AccountWrapper[2]; accounts[0] = new AccountWrapper { Id = 1, Name = "1" }; [code]...
ListBox is populated at button click. When I save accounts to ViewState listBox is empty, when not it displays collection good.
I have a usercontrol with asp:textbox controls on it that also performs postbacks. If two users, who are both identified by a different session variable, postback the page within the same second, one user will see the other user's viewstate values in the text boxes. I have validated that this happens by setting a textbox, a session variable, and a cookie to the same value (the same value that identifies the user) and writing to the log when all three don't match. The text box's value is the one that is logged as the other user's value.ASP.net 3.5, IIS 6
I've created a Web User Control that is placed on the page at design time. It's purpose is to pop up with a grid of items the user is to choose from. So I've got a gridview on it. And this code in the usercontrol:
Public Property DataTable() As Data.DataTable Get If Not IsNothing(ViewState("_SelectGridDataTable")) Then Return ViewState("_SelectGridDataTable") Else Return Nothing End If End Get Set(ByVal value As Data.DataTable) ViewState("_SelectGridDataTable") = value End Set End Property
So when the user clicks on a button on the page, I put this in the code on the page:
And this works fine. The grid pops up (using jQuery) and the grid is shown. The problem is, that when the user clicks the "OK" button on the UserControl, the ViewState("_SelectGridDataTable") is always nothing. And I don't get it, since it's in the viewstate.. ?!? So does viewstate here not REALLY mean viewstate?
this is about ASP.NET, ViewState, UserControls and loosing the values of my properties. It is an classic question by know, I know, and even though I have searched here and on Google for a resolution to this problem, I havent succeeded. On the contrary, the more I test different things, the less I understand it seems.
On top of this I am using ext.net and their so called DirectMethod's but I dont think that has much to do with this problem. There are numerous questions I have and I hope that this text will be fairly readable and understandable =)
The UserControl
I have a UserControl, Customers.ascx, that contains some Properties. The "most" important is *_CustomerId*. The _CustomerId is set in code-behind, in ext.net's "DirectMethod" like this (code below from the Page Customers.aspx):
I have several usercontrols which are loaded based on business logic.However, all of them have webcontrols whose selected/entered value needs to be accessible in parent page on an event.Since there can be any combination of UserControls, I do not want to load all the UserControls in the Parent Page, since they are heavy.
I would like to load only those controls which are supposed to appear on the page, yet access the value from the usercontrol which caused the postback. (I would rather not access using Request.Form) (ViewState is open, but unsuccessful to store value in parent page's viewstate in onClick)Here is a sample scenario
Page: Home
Dynamically Loads: UserControls1
UserControls has TextBox tb and Button btn, causing onClick
When btn is clicked, I want to get value of tb in parent page on PostBack, Page creates UserControl2
I have a custom control in an aspx page that has a property named Size
public int Size { get { return Convert.ToInt32(ViewState["CreativeSize"]); } set { ViewState["CreativeSize"] = value; } }
This property is set in the aspx page to a value lets say 500 during a postback called by a Button control that is in the page (not in the custom control).
I also have a button inside the custom control that raises a postback like this
protected void btnUpload_Click(object sender, EventArgs e) { if (fuBannerfile.HasFile) if (fuBannerfile.FileContent.Length / 1024 > this.Size) ;//code here not important }
When this event is called the "this.Size" property is 0. I also noticed during debugging that during Page_Load of the page, if i access the property like this:
int size = customControlId.Size;
the property is set to 500. But after that when the debugger reaches the event inside the control the property is 0.
I have a page with a few usercontrols. from a usercontrol I will redirect to a new page(response.redirect). Now On pressing the back button I want the data to persist for the usercontrols as well. I have tried it out by overriding DeterminePostBackMode, LoadPageStateFromPersistenceMedium, and SavePageStateToPersistenceMedium but all data except the ones within the usercontrol persist. i feel what i have tried is ok for the page data but for usercontrol data do i need to do something else.
P.S: I understand that i could be storing all user controls value in a session but I am looking for another way because its going to be a huge task taking each controls values in a session. I am not using any dynamically loaded user controls. May be if I know of a way of saving and restoring viewstate for user controls it would work but..
I have been getting this error a lot lately with some of my users, and I had a couple of concerns with view state and I have read so many articles but I am still lost..
1. I use masterpage on all the pages and I need viewstate for some of the pages but..
There is a page where a user will fill out the information and then submit this data to a cgi server, and it is where I get most of the Client Disconnected errors, what would happen if I disable viewstate when they click on that button?
Now when a user browses from one page to another, does the view state from the previous page get deleted? If not how would I delete it?
Does the master page have its own viewstate? Would I be able to make sure none of items on my master page are using the viewstate?
I have a shopping cart page (Cart.aspx) that has a button that will (sometimes) post to a third party payment gateway, if payment is necessary. The payment gateway will process the payment and then do a silent post to my website (Order.aspx) so I can update the order status.
Order.aspx always throws an invalid viewstate error, even though viewstate is disabled on the page.
What's happening is that Cart.aspx (which has viewstate enabled) posts to the payment gateway, and the gateway will post it back as part of the silent post. Even though Order.aspx has viewstate disabled and validation disabled, it still tries to validate the __viewstate field it's being given.
I know setting EnableViewState=false will disable the rendering of the __viewstate field, but if another page provides the field, shouldn't it still skip validation? I tried calling ViewState.Clear() on the Page_Init event of Order.aspx, but ViewState is apparently empty. how to get around this? I don't want to disable ViewState on Cart.aspx (in some cases it may be necessary), but I can't figure out how to clear it on Order.aspx.
In building custom controls, I've seen two patterns for using the viewstate. One is to use properties to disguise the viewstate access as persistent data.
public bool AllowStuff { get { return (ViewState[constKeyAllowStuff] != null) ? (bool)ViewState[constKeyAllowStuff] : false; } set { ViewState[constKeyAllowStuff] = value; } }
The other is to use private member fields and to override the Load/SaveViewState methods on the control and handle it all explicitly:
(I cut out a lot of safety checking for clarity, so just ignore that.) Is there are particular advantage to one method over the other? I can't see how they'd differ much performance wise. Version 1 is lazy, so I guess you save a bit if you don't need that particular value during a pass. Version 1 is also more abstract, hides the details better. Version 2 is clearer about when the data is actually valid and ok to read or modify (between the load and save) because it more clearly works within the ASP.NET lifecycle. Version 2 does tend to require more boilerplate code though (a property, a backing private field, and viewstate handling in two places) as opposed to Version 1 which combines all that into one place.
I want to disable my viewstate in a form because its too bulky (about 1mb per page) due to retrieving some data from database and in other place on the same form I want to access a control from my master page. but when I set viewstate of Listview to false I'll get following error: Object reference not set to an instance of an object. what should I do in this situation? veiwstate is too damn bulky and here is what I've written for accessing particular control:
Control cc = Page.Master.FindControl("mainContent").FindControl("ListView1").FindControl("itemPlaceholderContainer"); foreach (Control ListItemctrl in cc.Controls) { Control lblNewsId = ListItemctrl.FindControl("lblNewsID"); if (lblNewsId != null) { Type t = lblNewsId.GetType(); if (t.FullName == "System.Web.UI.WebControls.Label") { string newsID = ((Label)lblNewsId).Text; foreach (Control childCtrl in ListItemctrl.Controls) { CheckBox ctrlCB = childCtrl.FindControl("chkItem") as CheckBox; if (ctrlCB.Checked) { //based on DDLAction we will do the things ;) } if (childCtrl.FindControl("chkItem") != null) break; }//end foreach childCtrl } }//end outer if }//end foreach listItenctrl
I have created a user control UserVote that has property to find total vote on particular question. Now I want to call it from an aspx page.The control code-behind (UserVote.ascx.cs) looks like:
public partial class UserVote : System.Web.UI.UserControl { protected void Page_Load(object sender, EventArgs e) { DataTable dtVoteInfo = ShowVoteDetail(objectType, objectId); if (dtVoteInfo != null) { if (dtVoteInfo.Rows.Count > 0) { int.TryParse(dtVoteInfo.Rows[0]["TOTAL_VOTE"].ToString(), out currentVote); int.TryParse(dtVoteInfo.Rows[0]["MY_VOTING"].ToString(), out myVoting); } } ltrVotes.Text = currentVote.ToString(); hfCurrentVote.Value = currentVote.ToString(); hfMyVote.Value = myVoting.ToString(); // ...snipped for brevity... } }
I have an usercontrol with fck editor for allowing user to add note in my aspx page, which allows the user all kind of text formatting.My need is that I have to access user control from the code behind and collect the content as the same format some one has entered in the fck editor.How can I do this?
(i) Default.aspx and Default.aspx.cs(ii) MyControl.ascx and yControl.ascx.csTo access MyControl.ascx from Default.aspx, we use following in Default.aspx:
But now I am wishing to access in MyControl.ascx.cs from Default.aspx.cs page. By default, I am totally unable to access any control or function exist in MyControl.ascx.cs file or say codebehind.