(ASP.NET)从Postback获取PlaceHolder控件的值

时间:2012-10-12 18:53:10

标签: asp.net visual-studio forms postback placeholder

如何在回发后检查占位符内的控件的值?

背景资料

我有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

1 个答案:

答案 0 :(得分:0)

我认为你必须重新创建你的控件OnInit,它们具有与回发之前相同的id。如果重新创建控件,数据将绑定到它们,您应该能够在按钮事件中访问它。