Stefan Wuthrich
Stefan Wuthrich

Reputation: 47

ASP.NET Control added to Placeholder lost values right after adding

Working over 5 hours on the following problem:

Private Sub ModulEdit_PreInit(sender As Object, e As EventArgs) Handles Me.PreInit

    Dim modulid As Integer = 1

    loadeditors(modulid)



End Sub


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

End Sub

Public Sub loadeditors(modulID As Integer)



    PlaceHolder1.Controls.Clear()

    Using dbContext As New EntitiesModel()
        Dim mps As List(Of ef.Modulparameter) = dbContext.Modulparameters.Where(Function(c) c.ModulID = modulID).ToList

        Dim mmid As Int16
        If EditMode.Checked = True Then
            mmid = RadComboBox3.SelectedValue
        End If

        Dim mp As ef.Modulparameter

        For Each mp In mps


            Dim lbl As New Label
            lbl.Text = "<BR>" & mp.Name & "<BR>"
            PlaceHolder1.Controls.Add(lbl)

            Select Case mp.Editor.Name

                Case "textbox1line"

                    Dim con As New TextBox
                    con.ID = mp.ID

                    If EditMode.Checked = True Then
                        Using dbContext2 As New EntitiesModel
                            Try
                                Dim mpa As ef.Menu_modul_paramvalue = dbContext2.Menu_modul_paramvalues.Where(Function(c) c.ModulparameterID = mp.ID And c.Menu_modulID = mmid).First
                                con.Text = mpa.Valuestring

                            Catch ex As Exception
                                con.Text = "AAAA"
                            End Try

                        End Using
                    End If



                    PlaceHolder1.Controls.Add(con)
                    'RadAjaxManagerProxy1.AjaxSettings.AddAjaxSetting(Panel1, con, Nothing)
                    'RadAjaxManagerProxy1.AjaxSettings.AddAjaxSetting(con, con, Nothing)


                Case "radeditor"

                    Dim con As New RadEditor
                    con.ID = mp.ID
                    con.ToolsFile = "\admin\controls\ToolsFile.xml"
                    'con.CssFiles.Add("\Content\frenzy\css\frenzy-orange.css")
                    If EditMode.Checked = True Then
                        Using dbContext2 As New EntitiesModel
                            Try
                                Dim mpa As ef.Menu_modul_paramvalue = dbContext2.Menu_modul_paramvalues.Where(Function(c) c.ModulparameterID = mp.ID And c.Menu_modulID = mmid).First
                                con.Content = mpa.Valuestring

                            Catch ex As Exception
                                con.Content = "BBBB"
                            End Try

                        End Using
                    End If


                    PlaceHolder1.Controls.Add(con)
                    'RadAjaxManagerProxy1.AjaxSettings.AddAjaxSetting(Panel1, con, Nothing)
                    'RadAjaxManagerProxy1.AjaxSettings.AddAjaxSetting(con, con, Nothing)



            End Select




        Next

    End Using


End Sub

I add the control dynamicly, calling the codepart above in pre_init (tryed in load and init too with same result) The value (text) for the control is there until that line PlaceHolder1.Controls.Add(con) After the con.text is empty.

The control is added after, but with no value. Strange, that in the same proc i add another control (label), where the text value is on the page after.

Adding additional info: the control value (text or content), when debugging the LoadEditors), is allways correctly set. But then on the page both (textbox and radeditor) are empty The routing is called from pre init, as described in a lot of related posts.

Upvotes: 0

Views: 397

Answers (2)

Stefan Wuthrich
Stefan Wuthrich

Reputation: 47

I fixed it myself:

  • Adding "con.ViewStateMode = System.Web.UI.ViewStateMode.Disabled" before adding control to placeholder
  • Calling "loadeditors()" in RadComboBox3 too

much probably the problem was, that i loaded editors in page-load or init, which got the correct values, but then the RadComboBox3.SelectedIndexChanged event was called, which overwrote the values somehow

So my answer is not a real answer, but it works now (I hate such: it works, but i dont know why) ;)

Upvotes: 0

zybroxz
zybroxz

Reputation: 713

You are calling loadeditors in ModulEdit_Init. Shouldn't this be LoadControls ?

Upvotes: 1

Related Questions