Solved

URGEN:Add a placeholder dynamically.

Posted on 2004-08-14
10
392 Views
Last Modified: 2006-11-17
How do I dyanmiccaly add a placeholder to a table. I am adding a text box like this

 For i = 0 To 25
            Dim tr As TableRow = New TableRow

            'make name cell with validator
            Dim tc1 As TableCell = New TableCell

            Dim txtName As TextBox = New TextBox
            txtName.ID = "txtName" + i.ToString()

            tc1.Controls.Add(txtName)
            tr.Cells.Add(tc1)

            Dim tcInet As TableCell = New TableCell
            Dim txtDial As RadioButton = New RadioButton
            Dim txtBroadband As RadioButton = New RadioButton

            txtDial.ID = "txtINet" + i.ToString()
            txtBroadband.ID = "txtINet" + i.ToString()

            tcINet.Controls.Add(txtDial)
            tcINet.Controls.Add(txtBroadband)

            tr.Cells.Add(tcINet)
     


            Table1.Rows.Add(tr)
 
I would like to add a placeholder after the INet control to later add text there.
0
Comment
Question by:jui2ce
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
  • 3
  • +1
10 Comments
 
LVL 20

Expert Comment

by:ihenry
ID: 11803094
Try this

.....
.....
Dim ctl As New PlaceHolder()
ctl.Controls.Add( txtDial )
tcINet.Controls.Add(ctl)
.....
.....
0
 
LVL 15

Expert Comment

by:Thogek
ID: 11803101
Is there a reason you cannot add a PlaceHolder control in exactly the same way you're currently adding the TextBox?  You can then reference it by ID via the Page's FindControl method (http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwebuicontrolclassfindcontroltopic1.asp), in order to modify its contents, etc.
0
 

Author Comment

by:jui2ce
ID: 11803200
I have tried adding it like this. However it does not find the control PlaceHolder3

Dim EtcLname As TableCell = New TableCell
Dim PLtxtname As PlaceHolder = New PlaceHolder
                                    
PLtxtname.ID = "PlaceHolder3"
EtcLname.Controls.Add(PLtxtname)
Etr.Cells.Add(EtcLname)

   Table1.Rows.Add(Etr)
0
PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

 
LVL 15

Expert Comment

by:Thogek
ID: 11803221
What do you do to try to "find the control PlaceHolder3"?

Something like
    Dim crtl As Control = Me.FindControl("PlaceHolder3")
    Dim place As PlaceHolder = CType(ctrl, System.Web.UI.WebControls.PlaceHolder)
    place.Controls.Add(new LiteralControl("Boo!"))
might work.

Or, if you're just looking to add text, you might wanna use a LiteralControl instead of a PlaceHolder, and just set the LiteralControl's Text property.
0
 

Author Comment

by:jui2ce
ID: 11803244
That would work if I manually add the placeholder

<asp:PlaceHolder id="PlaceHolder3"  runat="server"/>

That is the problem I need to add that dynamically.
0
 
LVL 20

Expert Comment

by:ihenry
ID: 11803251

Please post more code might help us to identify your problem.
0
 

Author Comment

by:jui2ce
ID: 11803334
<Script Runat="Server">
       Private Sub Page_Load()
            Dim i As Integer

            For i = 1 To 25
                        Dim tr As TableRow = New TableRow
                        Dim tc1 As TableCell = New TableCell
                        Dim Etcname As TableCell = New TableCell
                        
                        
                        Dim PLtxtname As PlaceHolder = New PlaceHolder
                        Dim txtName As TextBox = New TextBox
                        
                        
                        txtName.ID = "txtName" + i.ToString()
                        PLtxtname.ID = "PlaceHolder"  + i.ToString()
                        
                        tc1.Controls.Add(txtName)
                        Etcname.Controls.Add(PLtxtname)
                        
                        tr.Cells.Add(tc1)
                        tr.Cells.Add(Etcname)
                        
                        Table1.Rows.Add(tr)
            Next      
            End Sub
            
      Sub Button_Click( s As Object, e As EventArgs )
       Dim i As Integer

                        For i = 1 To 25
                              dim txtName As TextBox
                              Dim PLtxtname As PlaceHolder
                              
                              Dim ctxtName
                              dim ePlaceHolder
                              
                              ctxtName="txtName" + i.ToString()
                              ePlaceHolder="PlaceHolder" + i.ToString()
                              
            txtName = CType(Me.Page.FindControl(ctxtName),TextBox)
            PLtxtname = CType(Me.Page.FindControl(ePlaceHolder),PlaceHolder)
                              
            if not txtName is Nothing then
                         
              ePlaceHolder.Controls.Add(new LiteralControl("test"))
                                        
                              end if          
                        Next
                  End Sub
                  
                                                
</Script>

<form Runat="Server">

<asp:Table id="Table1"
                       BackImageUrl="url"
                       Border="0"
                       CellSpacing="1"
                       CellPadding="1"
                       GridLines="Both"
                       HorizontalAlign="Center"
                       runat="server">
                  
                    
                  </asp:Table>
                        <asp:Button Text="Add" OnClick="Button_Click" Runat="Server" />
</form>            
0
 
LVL 20

Expert Comment

by:ihenry
ID: 11803455

I copied and pasted your code to my vs.net and got this exception,

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Public member 'Controls' on type 'String' not found.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.MissingMemberException: Public member 'Controls' on type 'String' not found.

Source Error:

Line 68:             If Not txtName Is Nothing Then
Line 69:
Line 70:                 ePlaceHolder.Controls.Add(New LiteralControl("test"))
Line 71:
Line 72:             End If
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

And I modified the Button_Click event
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        Dim i As Integer

        For i = 1 To 25
            Dim txtName As TextBox
            Dim PLtxtname As PlaceHolder

            Dim ctxtName As String
            Dim ePlaceHolder As String

            ctxtName = "txtName" + i.ToString()
            ePlaceHolder = "PlaceHolder" + i.ToString()

            txtName = CType(Me.Page.FindControl(ctxtName), TextBox)
            PLtxtname = CType(Me.Page.FindControl(ePlaceHolder), PlaceHolder)

            If Not txtName Is Nothing Then

                PLtxtname.Controls.Add(New LiteralControl("test"))

            End If
        Next
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Now it seems the code is working without any problem. Can you try that?
0
 
LVL 15

Expert Comment

by:Thogek
ID: 11804857
> That would work if I manually add the placeholder
> That is the problem I need to add that dynamically.

It should work either way.

However, you're code example above appears to be using ePlaceHolder (a string) and PLtxtname (a PlaceHolder) interchangably, which won't work -- my example code adds the LiteralControl to a PlaceHolder's Controls collection, not to a string's, which has no such collection -- and explains the error ihenry is seeing.  ihenry's code example seems to fix that immediate problem.
0
 
LVL 10

Accepted Solution

by:
jnhorst earned 250 total points
ID: 11827348
From your code, you seem to be looking for the placeholder in the Controls collection of the Page object, which will not work.  You added it to the Controls collection of the table cell.  You need to first resolve the correct table cell control and then use:

Dim ctl as PlaceHolder
ctl = CType(tableCell.FindControl("placholderID"), PlaceHolder)

John

0

Featured Post

PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Testing of the web services 1 77
asp.net mvc , views, hidden values ? 2 26
Record locking on classic ASP 3 64
asp.net, radiobuttonlist, c# 3 67
User art_snob (http://www.experts-exchange.com/M_6114203.html) encountered strange behavior of Android Web browser on his Mobile Web site. It took a while to find the true cause. It happens so, that the Android Web browser (at least up to OS ver. 2.…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Suggested Courses

737 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question