56 messaggi dal 25 settembre 2010
ciao,

ho un problema con il caricamento dinamico delle telerik , mi restituisce un'eccezione non gestita.

il codice vb dal lato codebheind dello user cointrol.
'..public const namelist = 4..+ codice
'la parte interessata:

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load


        If Not IsPostBack Then
            Dim i = 0

        End If

        If SePrimoCaricamento Then

            ' Qui le cose da fare al primo upload

        Else
            If Lista1.Count > 0 Then
                pNoRecord.Visible = False
            Else
                pNoRecord.Visible = True
            End If
           ' carico in una radwindow una lista tramite uno usercontrol
            For Each ctrId As String In Lista1
                Dim ctr As Control = LoadControl("~/template_documenti/template_Liste/VisuraCamerale_LISTA1.ascx")
                ctr.ClientIDMode = UI.ClientIDMode.Static
                ctr.EnableViewState = True
                ctr.ViewStateMode = UI.ViewStateMode.Enabled
                ctr.ID = ctrId
                divRwContent.Controls.Add(ctr)
                Dim xx As New pcs_wrapper.wrapper.documenti.prepara_documento
                xx._set(ctr, NameList, Nothing)
            Next
        End If

        SePrimoCaricamento = False

    End Sub
   'ricreo i controlli al clik del uc, per inserire i dati e aggiungerne di nuovi
Private Sub lbNuovo_1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbNuovo_1.Click

        If Lista1.Count = 0 Then
            pNoRecord.Visible = False
        End If

        Dim ctr As Control = LoadControl("~/template_documenti/template_Liste/VisuraCamerale_LISTA1.ascx")
        ctr.ClientIDMode = UI.ClientIDMode.Static
        ctr.EnableViewState = True
        ctr.ViewStateMode = UI.ViewStateMode.Enabled
        ctr.ID = "ctrLista1_" + Lista1.Count.ToString()
        divRwContent.Controls.Add(ctr)
        Dim xx As New pcs_wrapper.wrapper.documenti.prepara_documento
        xx._set(ctr, NameList, Nothing)


        Dim lst = Lista1
        lst.Add(ctr.ID)
        Lista1 = lst

    End Sub

va in errore sul clik di inserimento dai dell' uc
Qui lo stck di chiamate.

System.Web.HttpException non è stata gestita dal codice utente
ErrorCode=-2147467259
Message=Impossibile caricare viewstate. La struttura ad albero di controlli nella quale viene caricato viewstate deve corrispondere alla struttura ad albero di controlli utilizzata per salvare viewstate durante la richiesta precedente. Quando, ad esempio, si aggiungono i controlli in modo dinamico, i controlli aggiunti durante un postback devono corrispondere al tipo e alla posizione dei controlli aggiunti durante la richiesta iniziale.
Source=System.Web
WebEventCode=0
StackTrace:
in System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
in System.Web.UI.Control.LoadChildViewStateByIndex(ArrayList childState)
in System.Web.UI.Control.LoadViewStateRecursive(Object savedState)
in System.Web.UI.Control.AddedControl(Control control, Int32 index)
in System.Web.UI.ControlCollection.Add(Control child)
in PCSWeb.VISURA_CAMERALE.Page_Load(Object sender, EventArgs e) in C:\Appl\pcs_code\PCSWeb\Template_Documenti\Visura_camerale.ascx.vb:riga 61
in System.Web.UI.Control.OnLoad(EventArgs e)
in System.Web.UI.Control.LoadRecursive()
in System.Web.UI.Control.LoadRecursive()
in System.Web.UI.Control.LoadRecursive()
in System.Web.UI.Control.LoadRecursive()
in System.Web.UI.Control.LoadRecursive()
in System.Web.UI.Control.LoadRecursive()
in System.Web.UI.Control.LoadRecursive()
in System.Web.UI.Control.LoadRecursive()
in System.Web.UI.Control.LoadRecursive()
in System.Web.UI.Control.LoadRecursive()
in System.Web.UI.Control.LoadRecursive()
in System.Web.UI.Control.LoadRecursive()
in System.Web.UI.Control.LoadRecursive()
in System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException:
[

PS:controllato nomi,database,ecc.

sono impantanato...magari e una cosa stupidissima..vha be!
ciao grazie
Modificato da lorbax il 19 ottobre 2011 16.57 -
56 messaggi dal 25 settembre 2010
non mi sono fatto capire? per favore se c'è qualcuno..ho potuto solo leggere in giro che i controlli devo essere ricreati,ma credo come sotto da codice di farlo già,qualche suggerimento?
Grazie ciao.
678 messaggi dal 12 maggio 2001
www.idioteca.it
intanto devi ricrearli prima del Load, altrimenti sul postback del button non ti ritrovi niente.
Mettili ad esempio nell'evento Init.
ciao
56 messaggi dal 25 settembre 2010
ho provato a metterlo prima nell'init non cambia nulla,l'errore se tolgo il codice dalla load me lo resrtituisce sul click, in pratica succede questo:
ho diversi documenti costruiti allo stesso modo,uno di questi funziona correttamente ed è un template fatture che carica una lista di voci e importi,l'unica differenza è che questo template ha solo 2 campi,mentre gli altri hanno più controlli.
lerrore si verifica quando cerco di aggiungere più record,su quest'ultimi, posto l'aspx el'spx.vb interi chissa non si capisca qualche cosa di più:

<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="VISURA_CAMERALE.ascx.vb" Inherits="PCSWeb.VISURA_CAMERALE" %>
<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %>
<%@ Reference Control="aiuto.ascx" %>
<%@ Register src="Template_Liste/VisuraCamerale_Lista1.ascx" tagname="VisuraCamerale_Lista1" tagprefix="uc1" %>
<telerik:RadWindow ID="rw_1" runat="server" Height="450px" Width="600px" ReloadOnShow="true" Modal="true" Skin="Web20" Behaviors="Close" >
<ContentTemplate>
        
    <div style="padding:20px;" >

        <div id="divRwContent" runat="server">
        
            <p id="pNoRecord" runat="server">
            Nessun record!
            </p>
            
        </div>
       
        <asp:LinkButton ID="lbNuovo_1" runat="server" Text="Aggiungi nuovo record" OnClientClick= "effettuaCheck()"/>
        <br />
        <br />
        <asp:Button ID="btnChiudi_1" runat="server" Text="OK" OnClientClick= "effettuaCheck()" />
       
    </div>
</ContentTemplate>   
</telerik:RadWindow>




<div style="width: 99%; height: 30px" align="left">
    <div class="div_mezzo">
        <asp:Label ID="LBLTAG_69" runat="server"></asp:Label>
        &nbsp;
    </div>
    <div class="div_mezzo">
        <telerik:RadTextBox ID="PCSTAG_69" runat="server" Skin="Windows7">
        </telerik:RadTextBox>
    </div>
    <div>
        <asp:Image ID="HLPTAG_69" runat="server" ImageUrl="~/Styles/Immagini/help.gif" />
        <br />
    </div>
</div>
<div style="width: 99%; height: 30px" align="left">
    <div class="div_mezzo">
        <asp:Label ID="LBLTAG_71" runat="server"></asp:Label>
        &nbsp;
    </div>
    <div class="div_mezzo">
        <telerik:RadTextBox ID="PCSTAG_71" runat="server" Skin="Windows7">
        </telerik:RadTextBox>
    </div>
    <div>
        <asp:Image ID="HLPTAG_71" runat="server" ImageUrl="~/Styles/Immagini/help.gif" />
        <br />
    </div>
</div>
<div style="width: 99%; height: 30px" align="left">
    <div class="div_mezzo">
        <asp:Label ID="LBLTAG_72" runat="server" />
    </div>
    <div class="div_mezzo">
        <telerik:RadDatePicker ID="PCSTAG_72" runat="server" Skin="Windows7">
        </telerik:RadDatePicker>
    </div>
    <div>
        <asp:Image ID="HPLTAG_72" runat="server" ImageUrl="~/Styles/Immagini/help.gif" />
        <br />
    </div>
</div>
<div style="width: 99%; height: 30px" align="left">
    <div class="div_mezzo">
        <asp:Label ID="LBLTAG_73" runat="server"></asp:Label>
        &nbsp;
    </div>
    <div class="div_mezzo">
        <telerik:RadTextBox ID="PCSTAG_73" runat="server" Skin="Windows7">
        </telerik:RadTextBox>
    </div>
    <div>
        <asp:Image ID="HLPTAG_73" runat="server" ImageUrl="~/Styles/Immagini/help.gif" />
        <br />
    </div>
</div>
<div style="width: 99%; height: 30px" align="left">
    <div class="div_mezzo">
        <asp:Label ID="LBLTAG_83" runat="server"></asp:Label>
        &nbsp;
    </div>
    <div class="div_mezzo">
        <telerik:RadTextBox ID="PCSTAG_83" runat="server" Skin="Windows7">
        </telerik:RadTextBox>
    </div>
    <div>
        <asp:Image ID="HLPTAG_83" runat="server" ImageUrl="~/Styles/Immagini/help.gif" />
        <br />
    </div>
</div>
<div style="width: 99%; height: 30px" align="left">
    <div class="div_mezzo">
        <asp:Label ID="LBLTAG_84" runat="server"></asp:Label>
        &nbsp;
    </div>
    <div class="div_mezzo">
        <telerik:RadTextBox ID="PCSTAG_84" runat="server" Skin="Windows7">
        </telerik:RadTextBox>
    </div>
    <div>
        <asp:Image ID="HLPTAG_84" runat="server" ImageUrl="~/Styles/Immagini/help.gif" />
        <br />
    </div>
</div>
<div style="width: 99%; height: 30px;" align="left" >
    <div class="div_mezzo">
        <asp:Label ID="LBLTAG_85" runat="server"></asp:Label>
        &nbsp;
    </div>
    <div class="div_mezzo">
       <telerik:RadDatePicker ID="PCSTAG_85" runat="server">
    </telerik:RadDatePicker>
    </div>
    <div>
        <asp:Image ID="HLPTAG_85" runat="server" ImageUrl="~/Styles/Immagini/help.gif" />
        <br />
    </div>
    
</div>
<div style="width: 99%; height: 30px" align="left">
    <div class="div_mezzo">
        <asp:Label ID="LBLTAG_86" runat="server"></asp:Label>
        &nbsp;
    </div>
    <div class="div_mezzo">
        <telerik:RadTextBox ID="PCSTAG_86" runat="server" Skin="Windows7">
        </telerik:RadTextBox>
    </div>
    <div>
        <asp:Image ID="HLPTAG_86" runat="server" ImageUrl="~/Styles/Immagini/help.gif" />
        <br />
    </div>
</div>
<div style="width: 99%; height: 30px" align="left">
    <div class="div_mezzo">
        <asp:Label ID="LBLTAG_87" runat="server"></asp:Label>
        &nbsp;
    </div>
    <div class="div_mezzo">
        <telerik:RadTextBox ID="PCSTAG_87" runat="server" Skin="Windows7">
        </telerik:RadTextBox>
    </div>
    <div>
        <asp:Image ID="HLPTAG_87" runat="server" ImageUrl="~/Styles/Immagini/help.gif" />
        <br />
    </div>
</div>


<div style="width: 99%; height: 30px" align="left">
    <div class="div_mezzo">
        <asp:Label ID="LBLTAGLISTA_1" runat="server"></asp:Label>
        &nbsp;
    </div>

    <div class="div_mezzo">
        <asp:Label ID="lblAnteprima_1" runat="server" Text="Nessun record" />&nbsp;
        <asp:Button ID="btnApri_1" runat="server" Text="Inserisci..." OnClientClick="effettuaCheck()" />
    </div>
    <div>
        <asp:Image ID="HLPTAGLISTA_1" runat="server" ImageUrl="~/Styles/Immagini/help.gif" />
        <br />
    </div>
</div>

il VB:
Imports System.Xml
Imports System.IO



Public Class VISURA_CAMERALE
    Inherits System.Web.UI.UserControl

    Public Const NameList As Integer = 4

    Public Property SePrimoCaricamento As Boolean
        Get
            If Not IsNothing(ViewState("SePrimoCaricamento")) Then
                Return CType(ViewState("SePrimoCaricamento"), Boolean)
            End If
            Return True
        End Get
        Set(ByVal value As Boolean)
            ViewState("SePrimoCaricamento") = value
        End Set
    End Property

    Public Property Lista1 As List(Of String)
        Get
            If Not IsNothing(ViewState("Lista1")) Then
                Return CType(ViewState("Lista1"), List(Of String))
            End If
            Return New List(Of String)()
        End Get
        Set(ByVal value As List(Of String))
            ViewState("Lista1") = value
        End Set
    End Property

    Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init

        If Not IsPostBack Then
            Dim i = 0

        End If

        If SePrimoCaricamento Then

            'Qui le cose da fare al primo upload

        Else
            If Lista1.Count > 0 Then
                pNoRecord.Visible = False
            Else
                pNoRecord.Visible = True
            End If

            For Each ctrId As String In Lista1
                Dim ctr As Control = LoadControl("~/template_documenti/template_Liste/VisuraCamerale_LISTA1.ascx")
                ctr.ClientIDMode = UI.ClientIDMode.Static
                ctr.EnableViewState = True
                ctr.ViewStateMode = UI.ViewStateMode.Enabled
                ctr.ID = ctrId
                divRwContent.Controls.Add(ctr)
                Dim xx As New pcs_wrapper.wrapper.documenti.prepara_documento
                xx._set(ctr, NameList, Nothing)
            Next
        End If

        SePrimoCaricamento = False

    End Sub


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

' spostato sull'init...
        
    End Sub


    Protected Sub btnApri_1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnApri_1.Click

        rw_1.Visible = True
        rw_1.VisibleOnPageLoad = True

    End Sub

    Private Sub btnChiudi_1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnChiudi_1.Click
        rw_1.Visible = False
        rw_1.VisibleOnPageLoad = False

        If Lista1.Count > 0 Then
            lblAnteprima_1.Text = "Numero record: " + Lista1.Count.ToString()
        Else
            lblAnteprima_1.Text = "Nessun record"
        End If


    End Sub

    Private Sub lbNuovo_1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbNuovo_1.Click

        If Lista1.Count = 0 Then
            pNoRecord.Visible = False
        End If

        Dim ctr As Control = LoadControl("~/template_documenti/template_Liste/VisuraCamerale_LISTA1.ascx")
        ctr.ClientIDMode = UI.ClientIDMode.Static
        ctr.EnableViewState = True
        ctr.ViewStateMode = UI.ViewStateMode.Enabled
        ctr.ID = "ctrLista1_" + Lista1.Count.ToString()
        divRwContent.Controls.Add(ctr)
        Dim xx As New pcs_wrapper.wrapper.documenti.prepara_documento
        xx._set(ctr, NameList, Nothing)


        Dim lst = Lista1
        lst.Add(ctr.ID)
        Lista1 = lst

    End Sub


End Class

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.