detailsview

30/11/2009

Olá, num webform tenho uma gridview, e quando eu seleciono uma linha, aparece outra gridview com os registros referentes à linha selecionada. Ok, até aqui tudo normal. Quando eu clico na opção editar da segunda gridview, outro webform é carregado com as informações já exibidas nos textboxes para edição, menos os campos que eu defini como disabled, pois o usuario não pode edita-los. O numero do id da linha selecionada na primeira gridview também é exibida num campo: Usuário Solicitação Data Abertura Hora Abertura Data Atendimento Hora Início Hora Fim Descrição Atualizar Cancelar   Meu problema é quando eu clico num hiperlink para incluir mais um registro no segundo gridview, pois, ao abrir o webform com o details view para ser preenchido, o numero da solicitação, data e hora, que são preenchidos automaticamente no pageload, não aparecem no textbox: Usuário joao luiz Rayberg Ricardo Zoroastro Solicitação Data Abertura Hora Abertura Data Atendimento Hora Início Hora Fim Descrição Inserir Cancelar   Aí, para tentar entender o que está acontecendo, eu criei um botão vazio, sem nenhum codigo implementado, e para minha surpresa, ao clicar nele, as informações aparecem:   Usuário joao luiz Rayberg Ricardo Zoroastro Solicitação Data Abertura Hora Abertura Data Atendimento Hora Início Hora Fim Descrição Inserir Cancelar   Por que estas informações não aparecem logo no inicio quando a página é carregada? eu faço estas atribuições nos textboxes no evento pageload, mas eles não aparecem, somente quando a página dá um refresh (clicando no botao). Não entendo o que está acontecendo...
João Teixeira

João Teixeira

Curtidas 0

Respostas

Luiz Maia

Luiz Maia

30/11/2009

Ola João,   Pode me mandar seu codigo, para que eu possa avaliá-lo.   Aguardo Att Luiz Maia 
GOSTEI 0
João Teixeira

João Teixeira

30/11/2009

Este é o codigo da página dos gridview, quando eu clico no hiperlink para adicionar um novo registro ele faz isso:   public partial class Atendente_Default : System.Web.UI.Page {      protected void Page_Load(object sender, EventArgs e)      {      }      protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)      {           var solic = GridView1.DataKeys[e.NewSelectedIndex]["cod_solicitacao_atendimento"].ToString();           HLNovaOS.NavigateUrl = "~/Atendente/DtlsOS.aspx?modo=inclusao&id=" + solic;      } } E este é o código da pagina do detailsview: quando a pagina abre no modo inserção, nao aparece o valor recebido pela query string, se eu clico no botão vazio, os dados aparecem.   public partial class Views_Details_DtlsSolicitacao : System.Web.UI.Page {      protected void Page_Load(object sender, EventArgs e)      {           User _user = new User();           DBOOperations dbo = new DBOOperations();           _user = dbo.CheckUser(User.Identity.Name);           //LblUsuario.Text = _user.nome;           if (Request.QueryString["modo"] == "inclusao")           {                DetailsView1.ChangeMode(DetailsViewMode.Insert);                ((TextBox)DetailsView1.FindControl("TxtData")).Text = DateTime.Now.ToString("dd/MM/yyyy");                ((TextBox)DetailsView1.FindControl("TxtHora")).Text = DateTime.Now.ToString("hh:mm");                ((TextBox)DetailsView1.FindControl("TextBox1")).Text = Request.QueryString["id"].ToString();           }           else if (Request.QueryString["modo"] == "edicao")           {                DetailsView1.ChangeMode(DetailsViewMode.Edit);           }           //DetailsView1.DataBind();      }      protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e)      {           if ((e.NewMode != (DetailsViewMode.Insert)) || (Request.QueryString["modo"] == "inclusao"))           Response.Redirect("~/Atendente/Default.aspx");      }      protected void Button1_Click(object sender, EventArgs e)      {      } }
GOSTEI 0
Luiz Maia

Luiz Maia

30/11/2009

João, vou fazer os testes aqui e ja te mando a solução, ok?   Abraços Luiz Maia
GOSTEI 0
Luiz Maia

Luiz Maia

30/11/2009

O que esta acontecendo é que não esta havendo o RoundTrip, ou seja não esta atualizando a pagina, e logo o envento page_load não esta sendo executado.   Coloque um break point no page_load e degug a aplicação.   Sugiro vc criar um outro metodo que vc pode chama-lo de dentro do Page_load e tambem chama-lo novamente ao clicar no Hiperlink, ok?   Aguardo seu contato. Abraços   Luiz Maia
GOSTEI 0
João Teixeira

João Teixeira

30/11/2009

Olá, eu fiz o debug e o page load é esecutado sim. Ele executa todos os comandos do page load e não exibe nenhum erro. Mas os controles do detailsview não exibem os dados. Verifiquei se os parametros passados estão sendo recebidos no page load, e sim, eles são recebidos sim.
GOSTEI 0
Luiz Maia

Luiz Maia

30/11/2009

Joao, seguinte: Como não tem jeito de eu simular sua aplicação aqui, pois não tenho sua base de dados. Preciso que me mande uma aplicação, resumida de onde esta o erro, me mande uma pagina aspx com todo o codigo e etc... se possivel script da tabela que popula o GridView.   Voce pode publicar no Disco Virtual e me passar o link, ok?   Abraços e estou no aguardo Att Luiz Maia
GOSTEI 0
João Teixeira

João Teixeira

30/11/2009

Mando para onde? Qual email? o conteúdo é do meu trabalho, preciso de discrição... questão de ética.
GOSTEI 0
Luiz Maia

Luiz Maia

30/11/2009

João, quanto a discrição e etica, pode ficar tranquilo. Este é o prcedimento normal aqui do sistema de Suporte, todos os solicitantes postam e enviam os sistemas, os mesmos são deletados assim que o chamado é concluido, ok?   Voce deve usar o Disco Virtual. A equipe de suporte vai postar aqui os passos, ok?   Abraços   Att Luiz Maia
GOSTEI 0
Devmedia

Devmedia

30/11/2009

João,
o disco virtual serve para você postar arquivos no formato .zip. por ele você pode enviar para o consultor seu codigo fonte, banco de dados, entre outras informações.
Quanto a discrição, sim, ela é total.
O Suporte DevMedia é um serviço que existe há mais de um ano e sempre mantemos com a essa política. Os dados de nossos clientes são mantidos em total sigilo.
Para utilizar esse serviço, basta clicar na opção "Meu Disco Virtual" na home do suporte.
GOSTEI 0
João Teixeira

João Teixeira

30/11/2009

pronto, coloquei o projeto lá no disco virtual com o banco sqlexpress
GOSTEI 0
Luiz Maia

Luiz Maia

30/11/2009

Precise que me passe o link para que eu possa baixar...   Aguardo Luiz Maia
GOSTEI 0
João Teixeira

João Teixeira

30/11/2009

 Banco de dados.zip 315 KB http://video.devmedia.com.br/discovirtual/223817/Banco de dados.zip  HeraSupportSite.zip 115 KB http://video.devmedia.com.br/discovirtual/223817/HeraSupportSite.zip Seguem os links.
GOSTEI 0
Luiz Maia

Luiz Maia

30/11/2009

João,   Custou um pouco, mas achei a solução. Vc deve usar o prerender ao inves do page load:   protected void DetailsView1_PreRender(object sender, EventArgs e) { ((TextBox)DetailsView1.FindControl("TxtData")).Text = DateTime.Now.ToString("dd/MM/yyyy"); ((TextBox)DetailsView1.FindControl("TxtHora")).Text = DateTime.Now.ToString("hh:mm"); ((TextBox)DetailsView1.FindControl("TextBox1")).Text = Request.QueryString["id"].ToString(); }   E no seu HTML: <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" CellPadding="1" DataKeyNames="cod_ordem_servico,cod_solicitacao_atendimento,usuariocod" DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None" Height="50px" onmodechanging="DetailsView1_ModeChanging" style="margin-right: 0px; margin-top: 0px;" Width="240px" CaptionAlign="Left" CellSpacing="1" onprerender="DetailsView1_PreRender" > Abraços E aguardo um retorno ok?   Att Luiz Maia
GOSTEI 0
João Teixeira

João Teixeira

30/11/2009

Deu certo sim, muito obrigado.
GOSTEI 0
Luiz Maia

Luiz Maia

30/11/2009

Blz, João. Precisando é so nos contactar. Abraços e sucesso em seu projeto.   Att Luiz Maia
GOSTEI 0
POSTAR