Información de fondo
Tengo 2 controles que fueron creadosdinámicamente (están dentro de un marcador de posición). El botón de envío de formulario también se creó dinámicamente. Para aclarar, quiero obtener el valor de los campos creados dinámicamente DESPUÉS de presionar el botón.
El problema
Cuando se usa la solicitud.forma sigo obteniendo valores nulos. He intentado que el ClientIDMode sea estático, pero el problema persiste. También intenté usar simplemente el método PLACEHOLDER1.FindControll, pero esto también devuelve nulo
CÓDIGO (donde estoy tratando de recuperar los valores de los controles)
Protected Sub submitEdit_Click(ByVal sender As Object, ByVal e As EventArgs) Handles submitEdit.Click
Dim currentClass As String = submitEdit.CssClass
If currentClass = "hidden active" Then
"Get Rid of Controls
EditHeaderH1.Visible = False
submitEdit.Visible = False
submitEdit.CssClass = "hidden inactive"
currentStatus.value = "updated"
""""""""""""""""""""""""""""""""""""""""
"Find subject and Post Content""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Dim subjectText As String = Request.Form("editSubject")
Dim editorText As String = Request.Form("editEditor")
Dim editID As String = Request.Form("hiddenID")
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Dim connStr As String = ConfigurationManager.ConnectionStrings("oakfratnewsConnectionString").ConnectionString
Dim nCon As New SqlConnection(connStr)
Dim addCon As New SqlConnection(connStr)
Dim addCom As New SqlCommand("UPDATE News SET Subject = @Subject, [Content] = @Content WHERE (ID = @ID)", addCon)
addCom.Parameters.AddWithValue("@Content", Server.HtmlDecode(editorText))
addCom.Parameters.AddWithValue("@Subject", subjectText)
addCom.Parameters.AddWithValue("@ID", editID)
Try
addCon.Open()
addCom.ExecuteNonQuery()
addCon.Close()
Catch ex As Exception
End Try
End If
End Sub
CÓDIGO: donde se crearon los campos inicialmente
Public Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
If e.CommandName = "editPost" Then
plcEditor.Controls.Clear()
GridView1.Visible = False
Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim row As GridViewRow = GridView1.Rows(index)
Dim ID As String = GridView1.Rows(index).Cells(0).Text
""""""""""""""""""""""""""""""""""""""""CREATE Controls for Placeholder
Dim editEditor As New CuteEditor.Editor
Dim hiddenID As New HiddenField
Dim subjectTXT As New TextBox
Dim br As New Literal
hiddenID.Value = ID
hiddenID.ID = "hiddenID"
editEditor.ID = "editEditor"
editEditor.ClientIDMode = ClientIDMode.Static
subjectTXT.ID = "editSubject"
subjectTXT.ClientIDMode = ClientIDMode.Static
hiddenID.ClientIDMode = ClientIDMode.Static
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Dim i As Integer = 100
Dim editButton As New Button
editButton.ID = String.Concat("editButton-", i)
editButton.CommandArgument = i.ToString
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Dim sbjLabel As New Label
sbjLabel.Text = "Subject: "
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
editEditor.AutoConfigure = CuteEditor.AutoConfigure.Simple
br.Text = "<br/><br/>"
plcEditor.Controls.Add(hiddenID)
plcEditor.Controls.Add(sbjLabel)
plcEditor.Controls.Add(subjectTXT)
subjectTXT.Width = "100"
subjectTXT.Height = "25"
subjectTXT.CssClass = "editInput"
plcEditor.Controls.Add(br)
plcEditor.Controls.Add(br)
plcEditor.Controls.Add(editEditor)
plcEditor.Controls.Add(br)
plcEditor.Controls.Add(br)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Dim connStr As String = ConfigurationManager.ConnectionStrings("oakfratnewsConnectionString").ConnectionString
Dim nCon As New SqlConnection(connStr)
Dim addCon As New SqlConnection(connStr)
Dim addCom As New SqlCommand("SELECT * FROM [News] WHERE ([ID] = @ID)", addCon)
addCom.Parameters.AddWithValue("@ID", ID)
Dim results As SqlDataReader
addCon.Open()
results = addCom.ExecuteReader
While results.Read()
Dim editText As String = results.Item("Content")
Dim Subject As String = results.Item("Subject")
EditHeaderH1.InnerText = "Edit Post - " & Subject
editEditor.Text = editText
subjectTXT.Text = Subject
End While
results.Close()
addCon.Close()
""BUTTON Fade-IN Effect""
submitEdit.CssClass = "hidden active"
End If
Respuestas
0 para la respuesta № 1Creo que tienes que recrear tus controlesOnInit, con los mismos identificadores que tenían antes de la devolución de datos. Si vuelve a crear sus controles, los datos se vincularán a ellos y podrá acceder a ellos en el evento de botón.