Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > ASP .Net Building Controls > Design-Time Support for Composite Server Control in a Table

Reply
Thread Tools

Design-Time Support for Composite Server Control in a Table

 
 
brian.chandley@gmail.com
Guest
Posts: n/a
 
      01-30-2007
I am creating a Composite Server Control (.NET 1.1), the Control is
comprised of 3 Table Rows.
It works perfectly well during run time, and when it is webform alone.
The problem arises in the VS.net designer when the control is placed
in a Table.

<table >
<CC1:TerritorySearch id="SYRTerritorySearch2" runat="server"></
CC1:TerritorySearch>
</table>


It continues to work when it is rendered to the browser, but none of
the controls are displayed in the VS.NET designer. The table is
displayed, and any other rows I place in the table are displayed, just
not the control I have developed shows up.

I have created a very simple designer for the control that ensures the
control collection is created prior to calling GetDesignTimeHtml.

My question boils down to: Is there any thing that can be done to a
control that needs to be nested in a table to enable simple design-
time support?

Other details that might be useful:
The control inherits from System.Web.UI.WebControls.WebControl and
Inplements INamingContainer

I have tried rendering the control using the methods of the
HtmlTextWriter class, and creating all the rows and Cells as
HtmlTableCells and HtmlTableRows.

Any input would be appreciated.

Brian

 
Reply With Quote
 
 
 
 
Peter Zolja
Guest
Posts: n/a
 
      01-30-2007
> <table >
> <CC1:TerritorySearch id="SYRTerritorySearch2" runat="server"></
> CC1:TerritorySearch>
> </table>


Is your control outputting the <tr> and <td> tags? Have you tried doing it
like this?

<table >
<tr>
<td>
<CC1:TerritorySearch id="SYRTerritorySearch2"
runat="server"></CC1:TerritorySearch>
</td>
</tr>
</table>


 
Reply With Quote
 
 
 
 
brian.chandley@gmail.com
Guest
Posts: n/a
 
      01-31-2007
Thanks for your reply.
The control outputs 3 Table rows:

<tr>
<td colspan=2>heading</td>
</tr>.
<tr>
<td>Label</td>
<td>Input</td>
</tr>
<tr>
<td>anothe Label</td>
<td>another Input</td>
</tr>.

I have also tried, with no luck.

<TBody>
<tr>
<td colspan=2>heading</td>
</tr>.
<tr>
<td>Label</td>
<td>Input</td>
</tr>
<tr>
<td>anothe Label</td>
<td>another Input</td>
</tr>.
</TBody>

Brian



On Jan 30, 6:39 pm, "Peter Zolja" <(E-Mail Removed)> wrote:
> > <table >
> > <CC1:TerritorySearch id="SYRTerritorySearch2" runat="server"></
> > CC1:TerritorySearch>
> > </table>

>
> Is your control outputting the <tr> and <td> tags? Have you tried doing it
> like this?
>
> <table >
> <tr>
> <td>
> <CC1:TerritorySearch id="SYRTerritorySearch2"
> runat="server"></CC1:TerritorySearch>
> </td>
> </tr>
> </table>



 
Reply With Quote
 
Thomas Hansen
Guest
Posts: n/a
 
      01-31-2007
On Jan 31, 2:27 am, (E-Mail Removed) wrote:
> Thanks for your reply.
> The control outputs 3 Table rows:

[snip]

I can't really help you with your problem, however I can guide you
into a direction that might give you a solution...
The fact that you can infact attach to visual studio fro another
visual studio instance and actually debug what happens during the
DesignTime rendering is something very few people is aware of...
I figure there's probably something going on that you don't know
about!
Attach to visual studio (Debug/Processes choose the OTHER visual
studio process and click Attach)
Then open the page in the designer in design view and wait for your
breakpoint in the OTHER instance of visual studio to kick in (which
you obviously must add to the Render or RenderControl method)

Quite nifty feature that makes life very much easier for WebControl
developers...

..t

--
http://ajaxwidgets.com
Free ASP.NET Ajax Widgets NOW!

 
Reply With Quote
 
brian.chandley@gmail.com
Guest
Posts: n/a
 
      01-31-2007
Thanks for the suggestion. I will try it out.
Brian
On Jan 31, 3:45 am, "Thomas Hansen" <(E-Mail Removed)> wrote:
> On Jan 31, 2:27 am, (E-Mail Removed) wrote:> Thanks for your reply.
> > The control outputs 3 Table rows:

>
> [snip]
>
> I can't really help you with your problem, however I can guide you
> into a direction that might give you a solution...
> The fact that you can infact attach to visual studio fro another
> visual studio instance and actually debug what happens during the
> DesignTime rendering is something very few people is aware of...
> I figure there's probably something going on that you don't know
> about!
> Attach to visual studio (Debug/Processes choose the OTHER visual
> studio process and click Attach)
> Then open the page in the designer in design view and wait for your
> breakpoint in the OTHER instance of visual studio to kick in (which
> you obviously must add to the Render or RenderControl method)
>
> Quite nifty feature that makes life very much easier for WebControl
> developers...
>
> .t
>
> --http://ajaxwidgets.com
> Free ASP.NET Ajax Widgets NOW!



 
Reply With Quote
 
Peter Zolja
Guest
Posts: n/a
 
      01-31-2007
> I have also tried, with no luck.
>
> <TBody>
> <tr>
> <td colspan=2>heading</td>
> </tr>.
> <tr>
> <td>Label</td>
> <td>Input</td>
> </tr>
> <tr>
> <td>anothe Label</td>
> <td>another Input</td>
> </tr>.
> </TBody>


If you override WebControl you automatically get a <div> around your
control; if your base class is Control you don't have this issue. In any
case, I tried to do a simple test application and I got the same behavior.
Putting the custom control within <table></table> would make it invisible in
the designer. Mind you, it is doing this with the built-in controls as well,
which leads me to believe it's a VS designer limitation.

Is there any reason why your control can not output the <table> tag as well
(in which case you'll be able to see the control in the designer)? If you'd
give us more information about what you're trying to achieve we may be able
to suggest a different approach.


 
Reply With Quote
 
brian.chandley@gmail.com
Guest
Posts: n/a
 
      02-01-2007

The desired affect is to take a portion of a search input form has a
lot of Javascript and make it a standard part of many search pages.
It presents the user with a series of options and validates selection,
and limits selection based on who you are. This is not code I want to
be copied and pasted. This control will be used across several web
projects, so a UserControl is out of the question.

An implementation would look like this:

<table >
<tr>
<td>Site</td>
<td><input ... > </td>
</tr>
<tr>
<td>CIty</td>
<td><input ... > </td>
</tr>
<CC1:TerritorySearch id="TerritorySearch2" runat="server"></
CC1:TerritorySearch>
</table>

When The User executes his/her search, the code behind would read the
Search type and Search value properties.

Per Tom's suggestion, I used the debugger and my designer is being
called, I wounder if it assumes that it is just a TR, which has no
visible elements.

For a moment, I thought I could inherit from the TableRowCollection,
until I saw it is marked as sealed. I also hoped I could reach out to
the parent and add the rows I created to it's TableRowCollection but
this.Parent Is not a table, but the form.





On Jan 31, 3:19 pm, "Peter Zolja" <(E-Mail Removed)> wrote:
> > I have also tried, with no luck.

>
> > <TBody>
> > <tr>
> > <td colspan=2>heading</td>
> > </tr>.
> > <tr>
> > <td>Label</td>
> > <td>Input</td>
> > </tr>
> > <tr>
> > <td>anothe Label</td>
> > <td>another Input</td>
> > </tr>.
> > </TBody>

>
> If you override WebControl you automatically get a <div> around your
> control; if your base class is Control you don't have this issue. In any
> case, I tried to do a simple test application and I got the same behavior.
> Putting the custom control within <table></table> would make it invisible in
> the designer. Mind you, it is doing this with the built-in controls as well,
> which leads me to believe it's a VS designer limitation.
>
> Is there any reason why your control can not output the <table> tag as well
> (in which case you'll be able to see the control in the designer)? If you'd
> give us more information about what you're trying to achieve we may be able
> to suggest a different approach.



 
Reply With Quote
 
Peter Zolja
Guest
Posts: n/a
 
      02-01-2007
> <table >
> <tr>
> <td>Site</td>
> <td><input ... > </td>
> </tr>
> <tr>
> <td>CIty</td>
> <td><input ... > </td>
> </tr>
> <CC1:TerritorySearch id="TerritorySearch2" runat="server"></
> CC1:TerritorySearch>
> </table>


How about making your control a composite control and have two string
properties for "site" and "city" and two TextBoxes for input. If this is
something you can't control (the first part of the table) I'd suggest you
move your "TerritorySearch" control outside of the table and have it output
another table, so the generate code would look like this:

<table >
<tr>
<td>Site</td>
<td><input ... > </td>
</tr>
<tr>
<td>CIty</td>
<td><input ... > </td>
</tr>
</table>
<!-- code from TerritorySearch -->
<table>
<tr>
<td>control output </td>
</tr>
</table>



 
Reply With Quote
 
brian.chandley@gmail.com
Guest
Posts: n/a
 
      02-02-2007
This looks like what I will need to do.
Thanks for all your Time Peter,

On Feb 1, 12:05 pm, "Peter Zolja" <(E-Mail Removed)> wrote:
> > <table >
> > <tr>
> > <td>Site</td>
> > <td><input ... > </td>
> > </tr>
> > <tr>
> > <td>CIty</td>
> > <td><input ... > </td>
> > </tr>
> > <CC1:TerritorySearch id="TerritorySearch2" runat="server"></
> > CC1:TerritorySearch>
> > </table>

>
> How about making your control a composite control and have two string
> properties for "site" and "city" and two TextBoxes for input. If this is
> something you can't control (the first part of the table) I'd suggest you
> move your "TerritorySearch" control outside of the table and have it output
> another table, so the generate code would look like this:
>
> <table >
> <tr>
> <td>Site</td>
> <td><input ... > </td>
> </tr>
> <tr>
> <td>CIty</td>
> <td><input ... > </td>
> </tr>
> </table>
> <!-- code from TerritorySearch -->
> <table>
> <tr>
> <td>control output </td>
> </tr>
> </table>



 
Reply With Quote
 
sachinkorgaonkar@hotmail.com
Guest
Posts: n/a
 
      04-03-2007

<(E-Mail Removed)> wrote in message
news:(E-Mail Removed) oups.com...
> Thanks for the suggestion. I will try it out.
> Brian
> On Jan 31, 3:45 am, "Thomas Hansen" <(E-Mail Removed)> wrote:
>> On Jan 31, 2:27 am, (E-Mail Removed) wrote:> Thanks for your
>> reply.
>> > The control outputs 3 Table rows:

>>
>> [snip]
>>
>> I can't really help you with your problem, however I can guide you
>> into a direction that might give you a solution...
>> The fact that you can infact attach to visual studio fro another
>> visual studio instance and actually debug what happens during the
>> DesignTime rendering is something very few people is aware of...
>> I figure there's probably something going on that you don't know
>> about!
>> Attach to visual studio (Debug/Processes choose the OTHER visual
>> studio process and click Attach)
>> Then open the page in the designer in design view and wait for your
>> breakpoint in the OTHER instance of visual studio to kick in (which
>> you obviously must add to the Render or RenderControl method)
>>
>> Quite nifty feature that makes life very much easier for WebControl
>> developers...
>>
>> .t
>>
>> --http://ajaxwidgets.com
>> Free ASP.NET Ajax Widgets NOW!

>
>



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Losing Composite Control property that another Composite Control ... Chad ASP .Net Building Controls 0 02-01-2005 09:01 PM
Possible to create a composite control that has a child control that is a validator that validates the composite control itself? Jonathan Eric Miller ASP .Net Building Controls 2 07-22-2004 10:58 PM
Composite control with dynamic composite controls sleigh ASP .Net 1 02-12-2004 06:24 PM
Using Table control in a custom composite control. Control does not render properly in design time. jb_in_marietta@yahoo.com ASP .Net Building Controls 1 07-02-2003 08:05 AM
Using Table control in a custom composite control. Control does not render properly in design time. jb_in_marietta@yahoo.com ASP .Net 0 07-01-2003 09:26 PM



Advertisments