2012-10-12 43 views
2

如何在post-back之後檢索佔位符內的controlls值?

背景信息(ASP.NET)從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 

CODE:凡其中最初創建

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的,他們回發過的。如果您重新創建控件,數據將被綁定到它們,您應該可以在按鈕事件中訪問它。