2014-02-07 128 views
2

我想,我動態創建我的文本框的值,當我點擊一個按鈕如何讓動態創建文本框的文本值

我需要做到這一點引起我的文本框的值用於檢索來自數據庫的數據

我怎麼能做到這件事?

流量按鈕點擊 - 創建文本框 - 按鈕單擊 - - 與值填充文本框獲取文本框的文本

這裏是我的代碼,以使文本框

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    For i As Integer = 0 To 4 
     textbox = New TextBox With {.ID = "TextBox" & i} 
     plchld.Controls.Add(textbox) 
    Next 
End Sub 

我已經試過這樣的事情但這些代碼並沒有提前上班

Protected Sub OkButton_Click(sender As Object, e As EventArgs) Handles OkButton.Click 
    Dim a(5) As String 
    For i As Integer = 0 To 4 
     a(i) = CType(plchld.FindControl("Textbox" & i), TextBox).Text 
    Next 
End Sub 

感謝您的幫助

編輯的答案

我發現解決這個的方式。我使用request.form來獲取我的文本框的值。

感謝任何人,參與

問候,

朱利安

+0

是ASP.Net Web應用程序或Windows應用程序? – Lingaraj

回答

3

這是我如何在我的asp.net應用程序來完成。

創建動態控制

TextBox txtDate = new TextBox(); 
txtDate.EnableViewState = true; 
txtDate.ID = "PreixValue" + 1; 
txtDate.Text = "07 Feb 2014" 
pnl.controls.add(txtdate); 

要從文本

DateTime datefrom = DateTime.Now ; 

       for (int cnt = 0; cnt < Request.Form.Count; cnt++) 
       { 
        if (Request.Form.AllKeys[cnt].Contains("Prefixvalue")) 
        { 
         int ParamStartPoint = Request.Form.AllKeys[cnt].IndexOf("Prefix") + 4; 
         int ParamNameLength = Request.Form.AllKeys[cnt].Length - ParamStartPoint; 

         string[] ControlName = Request.Form.AllKeys[cnt].Substring(ParamStartPoint, ParamNameLength).Split('$'); 

           if (ControlName[0] == "Date From") 
           { 

        datefrom = DateTime.Parse(Request.Form[cnt]); 
        //datefrom has value now 
           } 
    } 
} 

這是我如何在我的web應用程序完成的,但也有可能是其他的方式實現這一目標檢索值。

基本上,當您在webform中創建動態控件時,將通過Request.Form提供。

希望這可以幫助你。

+0

你這樣做的方式是我找到工作的方式..使用request.form我可以得到我的文本框的價值..我會標記你的答案和我的問題的答案,並感謝回答 –

+0

@JulianSanjaya,很高興它幫助你......謝謝你打分答案...... – Lingaraj

0
Protected Sub OkButton_Click(sender As Object, e As EventArgs) Handles OkButton.Click 
Dim a(5) As String 
For i As Integer = 0 To 4 
    Dim anotherObj As TextBox = Me.Controls.Item("Textbox" & i) 
    a(i) =anotherObj.Text 
Next 
0

問題是動態控件在回發中丟失,所以當處理OkButton單擊事件時,您的控件中沒有任何內容。如果要檢索文本框中的文本,則必須在回發中使用相同的ID重新創建控件。

使用你的代碼,你需要做的就是回發確定文本框是否被創建,如果是,重新創建它們。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    ' Determine if the text boxes were created and if so, recreate them. 
    If CBool(ViewState("TextBoxesCreated")) Then 
     CreateTextBoxes() 
    End If 
End Sub 

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click 
    CreateTextBoxes() 
    ViewState("TextBoxesCreated") = True 
End Sub 

Private Sub CreateTextBoxes() 
    For i As Integer = 0 To 4 
     plchld.Controls.Add(New TextBox With {.ID = "TextBox" & i}) 
    Next 
End Sub 

Protected Sub OkButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles OkButton.Click 
    Dim a(4) As String 
    For i As Integer = 0 To 4 
     a(i) = CType(plchld.FindControl("Textbox" & i), TextBox).Text 
    Next 
End Sub 

我不知道你在做什麼的全部程度,但我建議不要動態創建它們,如果你不需要。只需顯示或隱藏文本框。

參考:http://www.codeproject.com/Articles/3684/Retaining-State-for-Dynamically-Created-Controls-i