Inquiridor
Viewstate

Pergunta
-
Todas as Respostas
-
Olá A.G.A,
Deveria funcionar corretamente.
Vc esta utilizando Ajax? Verifique se no Page Load de sua página não existe um código que altere os dados...
Vc esta preenchendo os campos com JavaScript?
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique -
Isso não deveria acontecer, que tipo de valores e quais controles ele está perdendo o valor ? Já verificou se inadivertidamente você não desligou o ViewStateMode da sua página ou dos controles ?
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Twitter @Olavooneto
Se for útil marque como resposta e faça um Developer feliz :) -
-
-
Olá A.G.A,
Se vc estiver executando uma ação dentro de um UpdatePanel e salvando os dados em um ViewState, seus dados não serão persistidos, pois o Ajax não irá commitar os dados no código de sua página.
Poderia postar o código por inteiro?
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique -
Ai estao os arquivos.
Realmente nao entendo pq o Viewstate nao esta sendo mantido.Na 1a execucao eu tenho um session que vem de outra pagina (keywordsOriginal).
Entao passo o valor dele pra um viewstate e libero a session do servidor.Assim eu manteria todo o estado desta pagina atraves do viewstate.
Mas ele nao esta mantendo o estado.ARQUIVO ASPX
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="testeViewstate.aspx.cs" Inherits="WEB.testeViewstate" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <table width="100%"> <tr> <td align="left" colspan="2"><asp:Label ID="lblOriginal" runat="server" Text=""></asp:Label></td> </tr> </table> <br /> <asp:ListView ID="lv" runat="server" ItemPlaceholderID="itemPlaceHolder" ondatabound="lv_DataBound" onpagepropertieschanging="lv_PagePropertiesChanging1"> <LayoutTemplate> <asp:PlaceHolder runat="server" ID="itemPlaceholder"></asp:PlaceHolder> </LayoutTemplate> <ItemTemplate> <strong><asp:Label ID="lblTitulo" runat="server" Text=""></asp:Label><%# Eval("Titulo") %></strong> <br /> </ItemTemplate> </asp:ListView> <asp:DataPager ID="dataPagerL" runat="server" PagedControlID="lv" QueryStringField="p"> <Fields> <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="true" FirstPageText="Primeira" ShowNextPageButton="false" ShowPreviousPageButton="false" /> <asp:NumericPagerField ButtonType="Button" ButtonCount="15" NextPageText="..." PreviousPageText="..." /> <asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="true" LastPageText="Última" ShowPreviousPageButton="False" ShowNextPageButton="false" /> </Fields> </asp:DataPager> </form> </body> </html>
ARQUIVO CS
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Text; using ClassLibrary; using FRAMEWORK; namespace WEB { public partial class testeViewstate : System.Web.UI.Page { string keywords; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { keywords = Request.QueryString["k"]; ViewState["keywords"] = keywords; if (Session["keywordsOriginal"] != null) { ViewState["keywordsOriginal"] = Session["keywordsOriginal"].ToString(); Session.Remove("keywordsOriginal"); } PesquisarLinks(0, keywords); } } private void PesquisarLinks(int paginaAtual, string keywordsComposta) { ObjectDataSource ds = new ObjectDataSource(); ds.EnablePaging = true; ds.StartRowIndexParameterName = "pCorrente"; ds.MaximumRowsParameterName = "ppPagina"; ds.TypeName = "FRAMEWORK.Link"; ds.SelectCountMethod = "RetornoRegistros"; ds.SelectMethod = "SelectLinks"; ds.SelectParameters.Add("ppPaginaCorrente", paginaAtual.ToString()); ds.SelectParameters.Add("pPalavraChave", keywordsComposta); lv.DataSource = ds; lv.DataBind(); } protected void lv_DataBound(object sender, EventArgs e) { lblOriginal.Text = ViewState["keywordsOriginal"].ToString(); } protected void lv_PagePropertiesChanging1(object sender, PagePropertiesChangingEventArgs e) { string a = ViewState["keywordsOriginal"].ToString(); int pageindex = e.StartRowIndex / e.MaximumRows; dataPagerL.SetPageProperties(pageindex * dataPagerL.PageSize, dataPagerL.MaximumRows, false); PesquisarLinks(pageindex, ViewState["keywords"].ToString()); } } }
Valeu
-
Olá A.G.A,
Tudo beleza?
Reparei que no exemplo que vc postou o UpdatePanel não esta lá. Seria isso mesmo? Chegou a testar o funcionamento da página sem o UpdatePanel?
Verifiquei seu código e me parece que deverá funcionar mesmo com o UpdatePanel, pois o único método que grava dados no ViewState esta no PageLoad da página.
Outra solução pode ser essa:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Text; using ClassLibrary; using FRAMEWORK; namespace WEB { public partial class testeViewstate : System.Web.UI.Page { string keywords; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { keywords = Request.QueryString["k"]; lblOriginal.Text = keywords; if (Session["keywordsOriginal"] != null) { Session.Remove("keywordsOriginal"); } PesquisarLinks(0, keywords); } } private void PesquisarLinks(int paginaAtual, string keywordsComposta) { ObjectDataSource ds = new ObjectDataSource(); ds.EnablePaging = true; ds.StartRowIndexParameterName = "pCorrente"; ds.MaximumRowsParameterName = "ppPagina"; ds.TypeName = "FRAMEWORK.Link"; ds.SelectCountMethod = "RetornoRegistros"; ds.SelectMethod = "SelectLinks"; ds.SelectParameters.Add("ppPaginaCorrente", paginaAtual.ToString()); ds.SelectParameters.Add("pPalavraChave", keywordsComposta); lv.DataSource = ds; lv.DataBind(); } protected void lv_DataBound(object sender, EventArgs e) { } protected void lv_PagePropertiesChanging1(object sender, PagePropertiesChangingEventArgs e) { string a = lblOriginal.Text; int pageindex = e.StartRowIndex / e.MaximumRows; dataPagerL.SetPageProperties(pageindex * dataPagerL.PageSize, dataPagerL.MaximumRows, false); PesquisarLinks(pageindex, lblOriginal.Text); } } }
[]s!Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique -
É, eu removi o update pq vi que nao era ele q estava influenciando.
A ideia é trazer a session, passar o valor dela pra uma viewstate e apagar a session do servidor.Assim utilizo o valor da viewstate pra trabalhar na pagina.
Mas cada vez que a pagina é atualizada, eu perco o valor do viewstate.Mas conseguiu achar o problema ?