2014-02-07 5 views
2

Я хочу, чтобы получить значение моего текстового поля, который я создал динамически, когда я нажимаю кнопкукак получить текстовое значение динамически созданного текстового поля

Мне нужно сделать это вызвать значение моего текстового поля используется для получения данные из базы данных

как я мог достичь этой цели ??

поток нажатия кнопок - создание текстового поля - заполнение текстового поля со значением - Button Click - Получить текст из текстового поля

вот мой код, чтобы сделать текстовое поле

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 веб-приложения или окна приложения? – 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 
           } 
    } 
} 

Это, как я сделал в моем веб-приложение, но могут быть и другие способы достижения этой цели.

В основном при создании динамического управления в веб-форме это будет доступно через 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 внутри вашего управления plchld ничего нет. Вы должны воссоздать свои элементы управления с тем же идентификатором при обратной передаче, если хотите получить текст в текстовых окнах.

Используя ваш код, все, что вам нужно сделать, это отправить по почте, определить, были ли созданы текстовые поля, и если да, заново их создайте.

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

Смежные вопросы