Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Julierme Felix

Server.Transfer VS2003

Recommended Posts

Pessoal tenho um form de agendamento de horarios, nesse form tenho uma opção para escolher se quero usar o recurso de DVD se sim então posso selecionar o DVD que quero usar, para essa seleção do DVD fiz um form com datagrid e checkbox onde o usuario estará selecionando o DVD, ao clicar no botão OK, os dados do form de DVD tem que ir para o form de agendamento.

Só que ao clicar no botão OK abre novamente a janela com o form de agendamento, então acontece um erro ao clicar no botão salvar.

 

Form de Agendamento. para abrir o form do DVD clico no link Selecione o DVD

Imagem Postada

 

no page load do form agendamento tenho

Dim x As String

x = context.Items("x").ToString()

lblDVD.Text = x

Dim y As String

y = context.Items("y").ToString()

editIDfita.Text = y

 

Form do DVD, seleciono o DVD q quero e clico no botão OK, nesse momento abre outra janela com o form do agendamento e os dados q escolhi, nome do DVD e código do DVD

Imagem Postada

 

Código do botão OK

Private Sub BtnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOK.Click

For Each item As DataGridItem In Me.dgConsulta.Items

If item.ItemType = ListItemType.Item OrElse item.ItemType = ListItemType.AlternatingItem Then

 

Dim ckitem As CheckBox = DirectCast(item.FindControl("CkItem"), CheckBox)

If ckitem.Checked Then

Me.Label1.Text &= item.Cells(2).Text

Me.Label2.Text &= item.Cells(1).Text

End If

End If

Next

context.Items.Add("x", Label1.Text)

context.Items.Add("y", Label2.Text)

Server.Transfer("agendar.aspx")

End Sub

Formulario de Agendamento após clicar no botão OK.

Imagem Postada

 

Erro que aparece ao clicar no botão Salvar do form de agendamento.

 

Object reference not set to an instance of an object.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

 

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

 

Source Error:

 

 

Line 242: 'If ChkDVD.Checked = True Then

Line 243: Dim x As String

Line 244: x = context.Items("x").ToString()

Line 245: lblDVD.Text = x

Line 246: Dim y As String

 

 

Source File: c:\inetpub\wwwroot\audio\agendar.aspx.vb Line: 244

 

Stack Trace:

 

 

[NullReferenceException: Object reference not set to an instance of an object.]

audio.agendar.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\audio\agendar.aspx.vb:244

System.Web.UI.Control.OnLoad(EventArgs e) +67

System.Web.UI.Control.LoadRecursive() +35

System.Web.UI.Page.ProcessRequestMain() +750

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este erro: Object reference not set to an instance of an objectÉ por que seu objeto deve ser estanciado, você tem que dar um New antes de usá-lo.

Ele não aceita dim X as new stringC:\Inetpub\wwwroot\audio\agendar.aspx.vb(246): Overload resolution failed because no accessible 'New' accepts this number of arguments.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal consegui resolver com a ajuda do Israel Aéce usando viewstate. If Not Page.IsPostBack Then viewstate("x") = context.Items("x").ToString() viewstate("y") = context.Items("y").ToString()no codigo do boltão salvar Response.Write(viewstate("y").ToString)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda preciso de ajuda....A pagina principal é a pagina do agendamento onde tem um link para a pagina onde vou selecionar o DVD, nessa pagina do DVD tenho o Context.items e o server.transfer,A Pagina DVD abre em outra janela e quando clico no botão OK fecha a pagina do DVD e abre a pagina do agendamento, ficando duas janelas com a pagina do agendamento.Creio que o problema esteja no server.transfer("agendar.aspx")Estou tentado agora fazer por session no lugar de context.itemsCódigo do Botão OK da pagina de DVDPrivate Sub BtnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOK.ClickFor Each item As DataGridItem In Me.dgConsulta.ItemsIf item.ItemType = ListItemType.Item OrElse item.ItemType = ListItemType.AlternatingItem ThenDim ckitem As CheckBox = DirectCast(item.FindControl("CkItem"), CheckBox)If ckitem.Checked ThenMe.Label1.Text &= item.Cells(2).TextMe.Label2.Text &= item.Cells(1).TextEnd IfEnd IfNext'context.Items.Add("x", Label1.Text)'context.Items.Add("y", Label2.Text)'Server.Transfer("agendar.aspx")Session("x") = Label1.TextSession("y") = Label2.TextResponse.Write(" ")End SubCódigo da pagina de agendamentoIf Not Page.IsPostBack Then'usando context'viewstate("x") = context.Items("x").ToString()'viewstate("y") = context.Items("y").ToString()'usando sessionviewstate("x") = Session("x").ToString()viewstate("y") = Session("y").ToString()lblDVD.Text = viewstate("x").ToStringeditIDfita.Text = viewstate("y").ToStringend if

Compartilhar este post


Link para o post
Compartilhar em outros sites

ainda preciso de ajuda!!! Explicando...Pessoal o exemplo citado, funciona se a pagina 1 fosse a pagina da lista de DVD, e a partir dessa pagina abrisse então a pagina do agendamento, mas é ao contrario. Primeiro tenho que abrir a pagina do agendamento, se o professor optar por usar um DVD em sua aula, ele clica no link para abrir a pagina da lista de DVD e selecionar o DVD, então após o OK ele volta para a pagina do agendamento e continua o cadastro.Código do botão OKCode SnippetPrivate Sub BtnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOK.ClickFor Each item As DataGridItem In Me.dgConsulta.ItemsIf item.ItemType = ListItemType.Item OrElse item.ItemType = ListItemType.AlternatingItem ThenDim ckitem As CheckBox = DirectCast(item.FindControl("CkItem"), CheckBox)If ckitem.Checked ThenMe.Label1.Text &= item.Cells(2).TextMe.Label2.Text &= item.Cells(1).TextEnd IfEnd IfNextcontext.Items.Add("x", Label1.Text)context.Items.Add("y", Label2.Text)Server.Transfer("agendar.aspx")End Sub o Server.Transfer("agendar.aspx") faz abrir novamente a janela do agendamento que já esta aberta, com isso os dados (data, aula inicial e final, professor, disciplina, etc..)que o professor digitou no inicio são perdidos, ficando também duas janelas abertas.O Certo seria a pagina do listadvd ser fechada e os dados enviados para a pagina do agendamento, sem que ela fosse aberta novamente. Se eu colocar o código abaixo no page load da pagina de agendamento da erro, pois a pagina agendamento abre primeiro, e como os valores do viewstate estão em branco da erro. Code SnippetIf Not Page.IsPostBack Then'usando contextviewstate("x") = context.Items("x").ToString()viewstate("y") = context.Items("y").ToString()'usando session'viewstate("x") = Session("x").ToString()'viewstate("y") = Session("y").ToString()lblDVD.Text = viewstate("x").ToStringeditIDfita.Text = viewstate("y").ToString Então não poderia usar esse código já que essa pagina vai se aberta primeiro. Como resolver isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ufa!!!PessoalConsegui resolver o meu problema para isso usei javascript Na pagina de agendamento no botão selecionar dvd cloquei o seguinte código.Private Sub btnsel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsel.ClickDim script As Stringscript += "<script language='JavaScript'>"script += "window.open('listadvd.aspx','popuppage','width=850,height=550,top=100,left=100,scrollbars=yes')"script += "</script>"Page.RegisterClientScriptBlock("clientScript", script)End Sub Na pagina de seleção do DVD o código do botão OK é seguinte.Private Sub BtnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOK.ClickFor Each item As DataGridItem In Me.dgConsulta.ItemsIf item.ItemType = ListItemType.Item OrElse item.ItemType = ListItemType.AlternatingItem ThenDim ckitem As CheckBox = DirectCast(item.FindControl("CkItem"), CheckBox)If ckitem.Checked ThenMe.Label1.Text &= item.Cells(2).TextMe.Label2.Text &= item.Cells(1).TextEnd IfEnd IfNextDim script As Stringscript += " "Page.RegisterClientScriptBlock("clientScript", script)End Sub Agradeço a todos pela ajuda.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.