To get the properties of the controls generated in runtime and placed on the Table control

Discussion in 'ASP .Net' started by DotNetJunkies User, Jun 26, 2004.

  1. Hi All

    I am developing a site using ASP.Net

    I want to develop a site that generates forms ( textbox,check boxes etc) automatically ie is from database itself depending on the no of rows in the table in database. That is to get as many textboxes and checkboxes as there are rows in table

    What I am doing right now is creating new text box, checkboxes etc in the code and then adding them to the cells and rows of the table control.
    This all works fine.

    The problem comes when I have to extract data from the form and insert into databse table.
    How do I get the properties of the controls generated in runtime and placed on the Table control?

    here are pieces of my code.


    Public rows, textCount, chkCount, cmbCount As Integer
    Public arr(,) As String //An array to store ids of auto generated controls

    //To create forms
    Dim locType, forType As String
    locType = cmbSelect.SelectedItem.Value
    forType = cmbSelect1.SelectedItem.Value

    Dim con As New OdbcConnection(ConfigurationSettings.AppSettings("conStr"))
    Dim da As New OdbcDataAdapter("select * from TEST_FORMAT where LType='" + locType + "'and FORMATTYPE='" + forType + "' ORDER BY PRINTID", con)

    Dim ds As New DataSet()
    da.Fill(ds)

    Dim i, col As Integer
    rows = ds.Tables(0).Rows.Count
    ReDim arr(rows, 3)

    For i = 0 To rows - 1
    Dim row As New TableRow()
    Dim cChkBox As New TableCell()
    Dim cLab As New TableCell()

    Dim cTxtBox As New TableCell()
    Dim cPID As New TableCell()


    Dim PrintId As New System.Web.UI.WebControls.Label()
    Dim l As New System.Web.UI.WebControls.TextBox()
    Dim parent, PID As String

    PID = ds.Tables(0).Rows(i).Item(0).ToString
    arr(i, 0) = PID

    parent = ds.Tables(0).Rows(i).Item("PARENTID").ToString

    PrintId.Text = ds.Tables(0).Rows(i).Item("PRINTID")
    PrintId.BackColor = Color.Cornsilk

    cPID.Controls.Add(PrintId)
    row.Cells.Add(cPID)

    If Not parent = "root" Then //making check box only for sub points and not for main Points
    Dim chkBox As New Web.UI.WebControls.CheckBox()
    Response.Write(chkBox.GetType.ToString)
    chkBox.ID = "chkBox" & i
    arr(i, 1) = chkBox.ID
    cChkBox.Controls.Add(chkBox)
    row.Cells.Add(cChkBox)
    chkCount += 1
    chkBox.EnableViewState = True

    Else //if it is main point no need of check box
    cChkBox.Controls.Add(New System.Web.UI.WebControls.Label())
    arr(i, 1) = "NULL"
    row.Cells.Add(cChkBox)
    End If

    l.Text = ds.Tables(0).Rows(i).Item("DESCRIPTION")
    l.TextMode = TextBoxMode.MultiLine
    l.ForeColor = Color.Black
    l.Rows = 2
    l.Columns = 40
    l.ReadOnly = True
    l.BorderColor = Color.Empty
    cLab.Controls.Add(l)
    row.Cells.Add(cLab)

    If Not parent = "root" Then
    If Ques = 1 Then
    Dim txtBox As New Web.UI.WebControls.TextBox()
    Response.Write(txtBox.GetType.ToString)
    txtBox.TextMode = TextBoxMode.MultiLine
    txtBox.Rows = 2
    txtBox.Columns = 40
    txtBox.ID = "txtBox" & i
    arr(i, 2) = txtBox.ID
    cTxtBox.BorderStyle = BorderStyle.Inset
    cTxtBox.Controls.Add(txtBox)
    row.Cells.Add(cTxtBox)
    textCount += 1

    ElseIf Ques = 2 Then
    Dim cmb As New Web.UI.WebControls.DropDownList()
    Response.Write(cmb.GetType.ToString)
    cmb.Items.Add("YES")
    cmb.Items.Add("NO")
    cmb.ID = "cmb" & i
    arr(i, 2) = cmb.ID
    cTxtBox.BorderStyle = BorderStyle.Inset
    cTxtBox.Controls.Add(cmb)
    row.Cells.Add(cTxtBox)
    cmbCount += 1

    End If

    Else
    arr(i, 2) = "NULL"
    End If

    // To access properties of controls generated at runtime

    Function iterateReadControls(ByVal par As Control)
    Dim c As Control
    Dim var As String
    For Each c In par.Controls
    var = c.GetType.ToString
    Response.Write(c.GetType.ToString)
    Response.Write("*")
    ' If c.GetType.ToString.Equals("System.Web.UI.WebControls.Table") Then
    'Dim t As New Table()

    If c.Controls.Count > 0 Then
    iterateReadControls(c)
    End If
    If c.GetType.ToString.Equals("System.Web.UI.WebControls.CheckBox") Then
    chkCount += 1
    ElseIf c.GetType.ToString.Equals("System.Web.UI.WebControls.TextBox") Then
    textCount += 1
    ElseIf c.GetType.ToString.Equals("System.Web.UI.WebControls.DropDownList") Then
    cmbCount += 1
    End If
    Next
    End Function



    i would be very grateful if anyone can guide me with this


    ---
    Posted using Wimdows.net NntpNews Component -

    Post Made from http://www.DotNetJunkies.com/newsgroups Our newsgroup engine supports Post Alerts, Ratings, and Searching.
    DotNetJunkies User, Jun 26, 2004
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. okaminer
    Replies:
    2
    Views:
    893
    okaminer
    Feb 8, 2005
  2. Replies:
    8
    Views:
    4,926
    Lau Lei Cheong
    Mar 11, 2005
  3. Replies:
    1
    Views:
    1,006
    Brock Allen
    Jun 17, 2006
  4. Replies:
    0
    Views:
    2,055
  5. Nick
    Replies:
    1
    Views:
    211
Loading...

Share This Page