I am working with SharePoint 2003. I am using (using C#)
an existing webpart as a child control (server control).
I need to access/manipulate the HTML that the control
outputs prior to rendering it to the the page. The
control outputs a list in a one-column table format. I
need to access the contents of the rows and output them
with restrictions in my own table format. Does anyone
have any examples of manipulating the HTML of a server
control prior to rendering it to a page or using existing
webparts as child webparts to enhance the functionality?
Thank-you,
Barb 10 2248
Hi Barbara,
Thanks for using Microsoft newsgroup.
My name is Jeffrey, I have reviewed your post, I will do some reseach on this issue.
I will reply to you ASAP. Thanks for your understanding.
Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights
Hi Barbara,
Thanks for your waiting.
I will ask some colleague of mine who is familiar with Share Point to help
you.
Thanks for your understanding.
Best regards,
Jeffrey Tan
Microsoft Online Partner Support
Get Secure! - www.microsoft.com/security
This posting is provided "as is" with no warranties and confers no rights.
Hi Barbara ,
if you are talking about any of the server controls (like datagrid ) , you
can render the control to a your own HTMLwriter , and grab the HTML out
of it .
Something like :
private void Button1_Click(object sender, System.EventArgs e)
{
//this.Controls.Add(localgrid);
System.IO.StringWriter oSW = new System.IO.StringWriter();
HtmlTextWriter oWriter = new HtmlTextWriter(oSW);
localgrid.RenderControl(oWriter);
Response.Write(oSW.ToString());
}
but if your child control is a webpart , then webpart's don't render their
HTML in RenderControl method , but a RenderWebPart method . You have to
see that which ever webpart you are trying to add allows you to use
RenderWebPart method (cause webpart framework calls that method
approptiatly) ..
In anyways , if you are trying to use the ListView webpart as your child
control , there RenderWebPart method off of that is sealed and you will not
be able to use it . Instead , use the Sharepoint object Model to get to a
list view and then uder the RenderASHTML method off the SPView object to
render a the view as HTML .
Hope this helps.
-Thanks
Rahul Sakdeo
Microsoft Sharepoint Support.
----- Rahul Sakdeo (MSFT) wrote: ----
Hi Barbara
if you are talking about any of the server controls (like datagrid ) , you
can render the control to a your own HTMLwriter , and grab the HTML out
of it
Something like
private void Button1_Click(object sender, System.EventArgs e
//this.Controls.Add(localgrid)
System.IO.StringWriter oSW = new System.IO.StringWriter();
HtmlTextWriter oWriter = new HtmlTextWriter(oSW)
localgrid.RenderControl(oWriter)
Response.Write(oSW.ToString())
but if your child control is a webpart , then webpart's don't render their
HTML in RenderControl method , but a RenderWebPart method . You have to
see that which ever webpart you are trying to add allows you to use
RenderWebPart method (cause webpart framework calls that method
approptiatly) .
In anyways , if you are trying to use the ListView webpart as your child
control , there RenderWebPart method off of that is sealed and you will not
be able to use it . Instead , use the Sharepoint object Model to get to a
list view and then uder the RenderASHTML method off the SPView object to
render a the view as HTML
Hope this helps
-Thank
Rahul Sakde
Microsoft Sharepoint Support
I am using Microsoft.SharePoint.Portal.WebControls.ListingSum mary as a child control (Microsoft.SharePoint.Portal.WebControls.ListingSu mmary listSummWP). THis webpart outputs files (portal listings) organized by groups. The output is as simple as a HTML one-column table, with each row representing either the group heading or a filename/file link for each heading.
Can I access this html output so that I can restrict how many files actually display. I was told that since the webparts are sealed and I can't access the code of the webpart, that this would be the easiest way to enhance an existing Microsoft web part since the webpart already does the work of retrieving the files, I just want to access the output of this child webpart and restrict it by doing some hiding with div tags in my webpart and then throw the child away
So far I set up the custom properties in my webpart and pass these values to the child webpart in the override CreateChildControl method. Then in the RenderWebPart method I can output the webpart, this.listSummWP.RenderControl(output). But this is not what I want, I'm not manipulating the html output of the child prior to rendering my webpart. Is one of your examples mentioned above referring to this manipulation?
So far I set up the custom properties in my webpart and pass these values
to the child webpart in the override CreateChildControl method. Then in
the RenderWebPart method I can output the webpart,
this.listSummWP.RenderControl(output). But this is not what I want, I'm
not manipulating the html output of the child prior to rendering my
webpart. Is one of your examples mentioned above referring to this
manipulation?
<rahul sakdeo> In that case you should be able to do something like what
I am doing in my code..
System.IO.StringWriter oSW = new System.IO.StringWriter();
HtmlTextWriter oWriter = new HtmlTextWriter(oSW);
this.listSummWP.RenderControl(oWriter)
string sHTML = oSW.ToString();
//Manipulate sHTML to whatever you want to
output.write(sHTML);
</rahul sakdeo>
Hope this helps.
Rahul Sakdeo
Thank-you for the information thus far. It has been very helpful. I had tried something similar but it wasn’t working. Thank-you for the clear example
Referring to your code comment - //Manipulate sHTML to whatever you want to
Now that I have the HTML in a string object, is there an easy way to manipulate the HTML? Is the only way through string manipulation, using String Methods? I've done some work with it so far but the task could prove to be tedious. Before I get to far into it, I wanted to find out if there is an easier way
Thanks
Barbara Alderto
----- Rahul Sakdeo (MSFT) wrote: ----
So far I set up the custom properties in my webpart and pass these values
to the child webpart in the override CreateChildControl method. Then in
the RenderWebPart method I can output the webpart,
this.listSummWP.RenderControl(output). But this is not what I want, I'm
not manipulating the html output of the child prior to rendering my
webpart. Is one of your examples mentioned above referring to this
manipulation
<rahul sakdeo> In that case you should be able to do something like what
I am doing in my code.
System.IO.StringWriter oSW = new System.IO.StringWriter();
HtmlTextWriter oWriter = new HtmlTextWriter(oSW)
this.listSummWP.RenderControl(oWriter
string sHTML = oSW.ToString()
//Manipulate sHTML to whatever you want to
output.write(sHTML)
</rahul sakdeo
Hope this helps
Rahul Sakde
Hi Barbara, String manipulation can be tedious at best, but If you have your HTML In a string at this point that is pretty much the only game
in town. What specifically do you want to do with the HTML once you have it in a string?
Scot Rose, MCSD
Microsoft Visual Basic Developer Support
Email : sc***@online.microsoft.com <Remove word online. from address>
This posting is provided “AS IS”, with no warranties, and confers no rights.
Get Secure! http://www.microsoft.com/security http://www.microsoft.com/protect
-------------------- Thread-Topic: Child WebParts in SPS 2003 thread-index: AcPh/+RTiDkeuv1TQS2KAHIqSjHgDQ== X-Tomcat-NG: microsoft.public.dotnet.languages.csharp From: "=?Utf-8?B?QmFyYmFyYSBBbGRlcnRvbg==?=" <an*******@discussions.microsoft.com> References: <0c****************************@phx.gbl> <Xx**************@cpmsftngxa07.phx.gbl> <46BBF89F-174B-49FB-
AB***************@microsoft.com> <29**************@cpmsftngxa07.phx.gbl>Subject: RE: Child WebParts in SPS 2003 Date: Fri, 23 Jan 2004 14:26:06 -0800 Lines: 39 Message-ID: <30**********************************@microsoft.co m> MIME-Version: 1.0 Content-Type: text/plain; charset="Utf-8" Content-Transfer-Encoding: 8bit X-Newsreader: Microsoft CDO for Windows 2000 Content-Class: urn:content-classes:message Importance: normal Priority: normal X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0 Newsgroups: microsoft.public.dotnet.languages.csharp Path: cpmsftngxa07.phx.gbl Xref: cpmsftngxa07.phx.gbl microsoft.public.dotnet.languages.csharp:214755 NNTP-Posting-Host: tk2msftcmty1.phx.gbl 10.40.1.180 X-Tomcat-NG: microsoft.public.dotnet.languages.csharp
Thank-you for the information thus far. It has been very helpful. I had tried something similar but it wasn’t working. Thank-you for the
clear example.
Referring to your code comment - //Manipulate sHTML to whatever you want to
Now that I have the HTML in a string object, is there an easy way to manipulate the HTML? Is the only way through string manipulation,
using String Methods? I've done some work with it so far but the task could prove to be tedious. Before I get to far into it, I wanted to find
out if there is an easier way?
Thanks,
Barbara Alderton
----- Rahul Sakdeo (MSFT) wrote: -----
So far I set up the custom properties in my webpart and pass these values
to the child webpart in the override CreateChildControl method. Then in
the RenderWebPart method I can output the webpart,
this.listSummWP.RenderControl(output). But this is not what I want, I'm
not manipulating the html output of the child prior to rendering my
webpart. Is one of your examples mentioned above referring to this
manipulation?
<rahul sakdeo> In that case you should be able to do something like what
I am doing in my code..
System.IO.StringWriter oSW = new System.IO.StringWriter();
HtmlTextWriter oWriter = new HtmlTextWriter(oSW);
this.listSummWP.RenderControl(oWriter)
string sHTML = oSW.ToString();
//Manipulate sHTML to whatever you want to
output.write(sHTML);
</rahul sakdeo>
Hope this helps.
Rahul Sakdeo
Background
I need to enhance the functionality of the Group Listing (Listing Summary) webpart. Since this Microsoft webpart is sealed, I was given the following design suggestion. Define the existing webpart as a child webpart (custom control) of the new custom webpart. Use the output from the child webpart (HTML) and manipulate it to be how I want it and then render the new HTML to the page
I need to do two things. One, add a button/link after each document listing, which allows the user to get a pop-up box giving the document details such as author, creation date, etc. Second, I need traverse through the table output (html) and restrict the output of each group listing to a site administator's defined value. I need to hide the rest of the items in the group that exceed this amount in a hidden div tag. I will then have a link at the end of each grioup listing section which allows the user to unhide the items in this hidden tag
I was told manipulating this child parts HTML output would be easier than recreating all the other functionality of the Listing Summary webpart. So far I have found no examples of using webparts as a child webpart, just examples of using other controls(textbox, buttons, etc.) as child controls
----- Scot Rose [MSFT] wrote: ----
Hi Barbara, String manipulation can be tedious at best, but If you have your HTML In a string at this point that is pretty much the only game
in town. What specifically do you want to do with the HTML once you have it in a string?
Scot Rose, MCS
Microsoft Visual Basic Developer Suppor
Email : sc***@online.microsoft.com <Remove word online. from address
This posting is provided “AS IS”, with no warranties, and confers no rights
Get Secure http://www.microsoft.com/securit http://www.microsoft.com/protec
------------------- Thread-Topic: Child WebParts in SPS 200 thread-index: AcPh/+RTiDkeuv1TQS2KAHIqSjHgDQ= X-Tomcat-NG: microsoft.public.dotnet.languages.cshar From: "=?Utf-8?B?QmFyYmFyYSBBbGRlcnRvbg==?=" <an*******@discussions.microsoft.com>>References : <0c****************************@phx.gbl><Xx******* *******@cpmsftngxa07.phx.gbl><46BBF89F-174B-49FB
AB***************@microsoft.com><29*...ngxa07.phx.gbl>>Subject: RE: Child WebParts in SPS 200Date: Fri, 23 Jan 2004 14:26:06 -080 Lines: 3 Message-ID: <30**********************************@microsoft.co m>>MIME-Version: 1. Content-Type: text/plain charset="Utf-8 Content-Transfer-Encoding: 8bi X-Newsreader: Microsoft CDO for Windows 200 Content-Class: urn:content-classes:messag Importance: norma Priority: norma X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790. Newsgroups: microsoft.public.dotnet.languages.cshar Path: cpmsftngxa07.phx.gb Xref: cpmsftngxa07.phx.gbl microsoft.public.dotnet.languages.csharp:21475 NNTP-Posting-Host: tk2msftcmty1.phx.gbl 10.40.1.18 X-Tomcat-NG: microsoft.public.dotnet.languages.csharThank-you for the information thus far. It has been very helpful. I had tried something similar but it wasn’t working. Thank-you for the
clear example
Referring to your code comment - //Manipulate sHTML to whatever you want to
Now that I have the HTML in a string object, is there an easy way to manipulate the HTML? Is the only way through string manipulation,
using String Methods? I've done some work with it so far but the task could prove to be tedious. Before I get to far into it, I wanted to find
out if there is an easier way
Thanks
Barbara Alderto
----- Rahul Sakdeo (MSFT) wrote: ----
So far I set up the custom properties in my webpart and pass these values
to the child webpart in the override CreateChildControl method. Then in
the RenderWebPart method I can output the webpart,
this.listSummWP.RenderControl(output). But this is not what I want, I'm
not manipulating the html output of the child prior to rendering my
webpart. Is one of your examples mentioned above referring to this
manipulation?
<rahul sakdeo> In that case you should be able to do something like what
I am doing in my code..
System.IO.StringWriter oSW = new System.IO.StringWriter();
HtmlTextWriter oWriter = new HtmlTextWriter(oSW);
this.listSummWP.RenderControl(oWriter)
string sHTML = oSW.ToString();
//Manipulate sHTML to whatever you want to
output.write(sHTML);
</rahul sakdeo>
Hope this helps.
Rahul Sakdeo
You may be able to use the Writeline method of the object. The only Documentation we have is on the MSDN web site http://msdn.microsoft.com/library/de...classtopic.asp
Scot Rose, MCSD
Microsoft Visual Basic Developer Support
Email : sc***@online.microsoft.com <Remove word online. from address>
This posting is provided “AS IS”, with no warranties, and confers no rights.
Get Secure! http://www.microsoft.com/security http://www.microsoft.com/protect
-------------------- Thread-Topic: Child WebParts in SPS 2003 thread-index: AcPl2Xgz9Szke8fOQLClXUHGqXkwHQ== X-Tomcat-NG: microsoft.public.dotnet.languages.csharp From: "=?Utf-8?B?QmFyYmFyZSBBbGRlcnRvbg==?=" <an*******@discussions.microsoft.com> References: <0c****************************@phx.gbl> <Xx**************@cpmsftngxa07.phx.gbl> <46BBF89F-174B-49FB-
AB***************@microsoft.com> <29**************@cpmsftngxa07.phx.gbl> <302BDCAC-896D-455B-BD48-AF53E85FEE98
@microsoft.com> <EP**************@cpmsftngxa07.phx.gbl> <AA**********************************@microsoft.co m>Subject: RE: Child WebParts in SPS 2003 Date: Wed, 28 Jan 2004 12:01:08 -0800 Lines: 133 Message-ID: <02**********************************@microsoft.co m> MIME-Version: 1.0 Content-Type: text/plain; charset="Utf-8" Content-Transfer-Encoding: 8bit X-Newsreader: Microsoft CDO for Windows 2000 Content-Class: urn:content-classes:message Importance: normal Priority: normal X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0 Newsgroups: microsoft.public.dotnet.languages.csharp Path: cpmsftngxa07.phx.gbl Xref: cpmsftngxa07.phx.gbl microsoft.public.dotnet.languages.csharp:216103 NNTP-Posting-Host: tk2msftcmty1.phx.gbl 10.40.1.180 X-Tomcat-NG: microsoft.public.dotnet.languages.csharp
Instead of manipulating the HTML string, can't I manipulate the HTMLTextWriter object prior to assignning it to text by using the
HTMLTextWriter methods? If so do you have any documentation or examples of using this technique
Bar
----- Barbara Alderton wrote: ----
Background
I need to enhance the functionality of the Group Listing (Listing Summary) webpart. Since this Microsoft webpart is sealed, I was given
the following design suggestion. Define the existing webpart as a child webpart (custom control) of the new custom webpart. Use the
output from the child webpart (HTML) and manipulate it to be how I want it and then render the new HTML to the page
I need to do two things. One, add a button/link after each document listing, which allows the user to get a pop-up box giving the
document details such as author, creation date, etc. Second, I need traverse through the table output (html) and restrict the output of each
group listing to a site administator's defined value. I need to hide the rest of the items in the group that exceed this amount in a hidden div
tag. I will then have a link at the end of each grioup listing section which allows the user to unhide the items in this hidden tag
I was told manipulating this child parts HTML output would be easier than recreating all the other functionality of the Listing Summary
webpart. So far I have found no examples of using webparts as a child webpart, just examples of using other controls(textbox, buttons,
etc.) as child controls
----- Scot Rose [MSFT] wrote: ----
Hi Barbara, String manipulation can be tedious at best, but If you have your HTML In a string at this point that is pretty much the only
game
in town. What specifically do you want to do with the HTML once you have it in a string?
Scot Rose, MCS
Microsoft Visual Basic Developer Suppor
Email : sc***@online.microsoft.com <Remove word online. from address
This posting is provided “AS IS”, with no warranties, and confers no rights
Get Secure! http://www.microsoft.com/security http://www.microsoft.com/protect
--------------------
Thread-Topic: Child WebParts in SPS 2003
thread-index: AcPh/+RTiDkeuv1TQS2KAHIqSjHgDQ==
X-Tomcat-NG: microsoft.public.dotnet.languages.csharp
From: "=?Utf-8?B?QmFyYmFyYSBBbGRlcnRvbg==?=" <an*******@discussions.microsoft.com>>References : <0c6901c3db8c
$6****************@phx.gbl><Xx**************@cpmsf tngxa07.phx.gbl><46BBF89F-174B-49FB-
AB***************@microsoft.com><29*...ngxa07.phx.gbl>>Subject: RE: Child WebParts in SPS 2003
Date: Fri, 23 Jan 2004 14:26:06 -0800
Lines: 39
Message-ID: <30**********************************@microsoft.co m>>MIME-Version: 1.0
Content-Type: text/plain;
charset="Utf-8"
Content-Transfer-Encoding: 8bit
X-Newsreader: Microsoft CDO for Windows 2000
Content-Class: urn:content-classes:message
Importance: normal
Priority: normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
Newsgroups: microsoft.public.dotnet.languages.csharp
Path: cpmsftngxa07.phx.gbl
Xref: cpmsftngxa07.phx.gbl microsoft.public.dotnet.languages.csharp:214755
NNTP-Posting-Host: tk2msftcmty1.phx.gbl 10.40.1.180
X-Tomcat-NG: microsoft.public.dotnet.languages.csharp
Thank-you for the information thus far. It has been very helpful. I had tried something similar but it wasn’t working. Thank-
you for the
clear example.
Referring to your code comment - //Manipulate sHTML to whatever you want to
Now that I have the HTML in a string object, is there an easy way to manipulate the HTML? Is the only way through string
manipulation,
using String Methods? I've done some work with it so far but the task could prove to be tedious. Before I get to far into it, I wanted to
find
out if there is an easier way?
Thanks,
Barbara Alderton
----- Rahul Sakdeo (MSFT) wrote: -----
So far I set up the custom properties in my webpart and pass these values
to the child webpart in the override CreateChildControl method. Then in
the RenderWebPart method I can output the webpart,
this.listSummWP.RenderControl(output). But this is not what I want, I'm
not manipulating the html output of the child prior to rendering my
webpart. Is one of your examples mentioned above referring to this
manipulation?
<rahul sakdeo> In that case you should be able to do something like what
I am doing in my code..
System.IO.StringWriter oSW = new System.IO.StringWriter();
HtmlTextWriter oWriter = new HtmlTextWriter(oSW);
this.listSummWP.RenderControl(oWriter)
string sHTML = oSW.ToString();
//Manipulate sHTML to whatever you want to
output.write(sHTML);
</rahul sakdeo>
Hope this helps.
Rahul Sakdeo
Hi, Barb
Scot is out today and asked me to follow up with his active threads.
Did the link that Scot provided on Monday resolve your issue, or is there
more that needs to be done?
Please respond so that we know where things stand.
Thank you for choosing the MSDN Managed Newsgroups,
John Eikanger
Microsoft Developer Support
This posting is provided “AS IS” with no warranties, and confers no rights.
--------------------
| From: sc***@online.microsoft.com (Scot Rose [MSFT])
| Organization: Microsoft
| Date: Mon, 02 Feb 2004 15:13:14 GMT
| Subject: RE: Child WebParts in SPS 2003
| Newsgroups: microsoft.public.dotnet.languages.csharp
| Lines: 208
| Path: cpmsftngxa07.phx.gbl
| Xref: cpmsftngxa07.phx.gbl microsoft.public.dotnet.languages.csharp:217407
| NNTP-Posting-Host: tomcatimport2.phx.gbl 10.201.218.182
|
| You may be able to use the Writeline method of the object. The only
Documentation we have is on the MSDN web site
|
| http://msdn.microsoft.com/library/de...us/cpref/html/
frlrfsystemwebuihtmltextwriterclasstopic.asp
|
|
|
| Scot Rose, MCSD
| Microsoft Visual Basic Developer Support
| Email : sc***@online.microsoft.com <Remove word online. from address>
|
| This posting is provided “AS IS”, with no warranties, and confers no
rights.
|
| Get Secure!
| http://www.microsoft.com/security
| http://www.microsoft.com/protect This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: Astera |
last post by:
I seem to be having a problem using web parts after the beta 2 release. Any
time I try to have the WebPartManager on any page, I get the exception listed
below. I've gone through the steps listed...
|
by: Alan Silver |
last post by:
Hello,
Sorry for the long post, but I want to try and explain it clearly...
I'm using webparts for (possibly) an unusual scenario, and I'm having
problems. This could be because I'm doing...
|
by: Sahil Malik [MVP C#] |
last post by:
I have a few Q's about ASP.NET 2.0 webparts -
1. Will these be easily upgradeable to the next version of sharepoint?
2. Is there an easy way for me to reuse any third party custom control
inside...
|
by: Bart Van Hemelen |
last post by:
I'm working on a project where the user of a site will receive custom
content, depending on a set of parameters. The content will all be
contained in UserControls (.ascx), that will be used as...
|
by: brianroisentul |
last post by:
Hello,
I'd like to know which dll I have to reference when I use the
System.Web.UI.WebControls.Webparts namespace.
Thanks,
Brian
| |
by: Q. John Chen |
last post by:
I have an INTRAnet site that need to add some content management
feature. And I thought that I can use the WebParts.
Since this is an internal site, I use Windows authentication so the use
don't...
|
by: sales |
last post by:
How can I turn a webpart of for all users in the default mode and on
Reset personalation.
I have a portal page in ASP.net and have 7 webparts displayed, I only
want 6 displayed which the option to...
|
by: clintonG |
last post by:
Why don't we see more WebParts being used on the web? SharePoint gets all
the fun? And what are the prevailing opinions be they what they may about
the use of WebParts rather than WPF when the...
|
by: gerry |
last post by:
I am trying to create a custom container control that will only ever contain
a specific type of control.
At design time, when a control of a different type is added to the container
I would like...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers,...
| |
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
|
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated ...
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence...
| |