S
sinelnikov.andrei
Hello,
..NET 1.1/VB.NET:
I have a custom web control
Public Class DatePicker
Inherits Control
Implements INamingContainer
In the CreateChildControls I adding some controls to it:
Protected Overrides Sub CreateChildControls()
placeJavascript()
MyBase.Controls.Add(New LiteralControl("<table
class='Calendar'><tr><td>"))
Dim txtTextBox As New System.Web.UI.WebControls.TextBox
With txtTextBox
If Len(m_ControlCssClass) > 0 Then
.CssClass = m_ControlCssClass
End If
If Not (m_text = "") Then
.Text = m_text
End If
If Not (m_Css = "") Then
.CssClass = m_Css
End If
.ID = "foo"
.Width = Unit.Pixel(80)
.MaxLength = Me.DateType.Length
End With
MyBase.Controls.Add(txtTextBox)
MyBase.Controls.Add(New LiteralControl( _
"<img border='0' class='ImgNoSpace' alt='Calendar' " & _
"src='" & imgDirectory + m_calendar & "' " & _
"onclick=""javascriptopUpCalendar(document.all." &
Me.ClientID & "_foo,document.all." & _
Me.ClientID & "_foo, '" & m_DateType & "');"">"))
MyBase.Controls.Add(New LiteralControl("</td></tr></table>"))
End Sub
Now, then I trying to do For Each ctl As Control In myControl.Controls
on my page:
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
' Call base load before we do any work at this level
MyBase.OnLoad(e)
dpFrom.ValidatingControlClientID = btnSearch.ClientID
dpThrough.ValidatingControlClientID = btnSearch.ClientID
For Each ctl As Control In dpFrom.Controls
If TypeOf ctl Is TextBox Then
dpThrough.SecondDateControlClientID = ctl.ClientID
End If
Next
For Each ctl As Control In dpThrough.Controls
If TypeOf ctl Is TextBox Then
dpFrom.SecondDateControlClientID = ctl.ClientID
End If
Next
End Sub
I am getting nothing...
So, if I set the breakpoint on the For Each ctl As Control In
dpFrom.Controls and QuickWatch (or just Watch) dpFrom.Controls - I will
see Count = 0.
Now - interesting part: If I QuickWatch (or just Watch) just dpFrom and
will expand Controls property - I will see Count = 4.
And after that - if I QuickWatch (or just Watch) dpFrom.Controls - I
will see Count = 4.
I beleive that that is a bug.
So, how I can get my control's child controls on the page? Should I do
something differently then I adding child controls in my web control?
Help!
..NET 1.1/VB.NET:
I have a custom web control
Public Class DatePicker
Inherits Control
Implements INamingContainer
In the CreateChildControls I adding some controls to it:
Protected Overrides Sub CreateChildControls()
placeJavascript()
MyBase.Controls.Add(New LiteralControl("<table
class='Calendar'><tr><td>"))
Dim txtTextBox As New System.Web.UI.WebControls.TextBox
With txtTextBox
If Len(m_ControlCssClass) > 0 Then
.CssClass = m_ControlCssClass
End If
If Not (m_text = "") Then
.Text = m_text
End If
If Not (m_Css = "") Then
.CssClass = m_Css
End If
.ID = "foo"
.Width = Unit.Pixel(80)
.MaxLength = Me.DateType.Length
End With
MyBase.Controls.Add(txtTextBox)
MyBase.Controls.Add(New LiteralControl( _
"<img border='0' class='ImgNoSpace' alt='Calendar' " & _
"src='" & imgDirectory + m_calendar & "' " & _
"onclick=""javascriptopUpCalendar(document.all." &
Me.ClientID & "_foo,document.all." & _
Me.ClientID & "_foo, '" & m_DateType & "');"">"))
MyBase.Controls.Add(New LiteralControl("</td></tr></table>"))
End Sub
Now, then I trying to do For Each ctl As Control In myControl.Controls
on my page:
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
' Call base load before we do any work at this level
MyBase.OnLoad(e)
dpFrom.ValidatingControlClientID = btnSearch.ClientID
dpThrough.ValidatingControlClientID = btnSearch.ClientID
For Each ctl As Control In dpFrom.Controls
If TypeOf ctl Is TextBox Then
dpThrough.SecondDateControlClientID = ctl.ClientID
End If
Next
For Each ctl As Control In dpThrough.Controls
If TypeOf ctl Is TextBox Then
dpFrom.SecondDateControlClientID = ctl.ClientID
End If
Next
End Sub
I am getting nothing...
So, if I set the breakpoint on the For Each ctl As Control In
dpFrom.Controls and QuickWatch (or just Watch) dpFrom.Controls - I will
see Count = 0.
Now - interesting part: If I QuickWatch (or just Watch) just dpFrom and
will expand Controls property - I will see Count = 4.
And after that - if I QuickWatch (or just Watch) dpFrom.Controls - I
will see Count = 4.
I beleive that that is a bug.
So, how I can get my control's child controls on the page? Should I do
something differently then I adding child controls in my web control?
Help!