/ / (ASP.NET) Ottenere il valore dei controlli PlaceHolder da Postback - asp.net, visual-studio, forms, postback, segnaposto

(ASP.NET) Ottenere valore dei controlli PlaceHolder da Postback - asp.net, visual-studio, moduli, postback, segnaposto

Informazioni di base

Ho 2 controlli che sono stati creatidinamicamente (sono all'interno di un segnaposto). Anche il pulsante di invio del modulo è stato creato dinamicamente.Per chiarire che voglio ottenere il valore dei campi creati dinamicamente DOPO che il pulsante è stato premuto.

Il problema

Quando si utilizza request.form continuo a ricevere valori nulli. Ho provato a rendere statico ClientIDMode, ma il problema persiste. Ho anche provato a utilizzare semplicemente il metodo PLACEHOLDER1.FindControll, ma anche questo restituisce null

CODICE (Dove sto cercando di recuperare i valori dei controlli)

 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

CODICE: dove i campi sono stati inizialmente creati

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

risposte:

0 per risposta № 1

Penso che tu debba ricreare i tuoi controlliOnInit, con gli stessi ID che avevano prima del postback. Se crei nuovamente i controlli, i dati verranno associati a essi e dovresti essere in grado di accedervi nell'evento del pulsante.