背景资料
我有2个动态创建的控件(它们位于占位符中)。表单提交按钮也是动态创建的。澄清我希望在按下按钮后获取动态创建的字段的值。
问题
使用request.form时,我一直得到空值。我已经尝试将ClientIDMode设置为静态,但问题仍然存在。我也试过简单地使用PLACEHOLDER1.FindControll方法,但这也返回null
代码(我试图检索控件的值)
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
代码:最初创建的字段
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
答案 0 :(得分:0)
我认为你必须重新创建你的控件OnInit,它们具有与回发之前相同的id。如果重新创建控件,数据将绑定到它们,您应该能够在按钮事件中访问它。