Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   ASP .Net (http://www.velocityreviews.com/forums/f29-asp-net.html)
-   -   creating on-the-fly asp:table in the code file (http://www.velocityreviews.com/forums/t58130-creating-on-the-fly-asp-table-in-the-code-file.html)

Murtix Van Basten 06-25-2003 06:01 AM

creating on-the-fly asp:table in the code file
 
Hi,

I dont know it is doable, but I wanna ask it anyway.

I am pulling 5 different data from a datatable row by row. So each row
has 5 fields and row count is variable not a constant. So, each row's fields
will be shown in a table in a different design. That means, I cannot use
DataGrid, because the view should be different. Here is the html:table
structure fo each datarow:

<table>
for (int i=0;i<DataSet.Tables["mytable"].Rows.Count;i++)
{
DataRow row = DataSet.Tables["myTable"].Rows[i];
// from here the html table's rows are being entered
<tr>
<td width=18%><img src=row[4].ToString()></td>
<td colspan=2>row[2].ToString()</td>
</tr>
<tr>
<td rowspan=2>&nbsp;</td>
<td rowspan=2 width=54%>row[5].ToString()</td>
<td width=28%>row[3].ToString()</td>
</tr>
<tr>
<td>row[1].ToString</td>
</tr>
<tr>
<td colspan=3><a href=details.aspx?dno=row[0].ToString()>Click Here
For More Info</a></td>
</tr>
}
</table>

As you have seen here, the table row count cannot be known, so I will
have to create tablerows as much as the datarow goes.

I have tried to do it with Rersponse.Write, but it is writing all of
these on top of the page, and it is ruining the design. I have tried to use
the <asp:Table> object, but it needs the <asp:TableRow> and <asp:TableCell>s
to be declared at design time. I wanted to do it inline of the aspx page, it
has given alot of runtime errors regarding to the compilation. (Because I am
using VS.NET and I am writing the code behind, not in the aspx files.)

So, how can I create these table rows on-the-fly ? Or I am kind of hoping
that, there must be another command, that does similar thing Response.Write
command does, but it puts the code whereever I want to be put.

Thanks and Regards.

Murtix Van Basten





PJ 06-25-2003 06:54 AM

Re: creating on-the-fly asp:table in the code file
 
Create your table w/ the LiteralControl. The LiteralControl takes as it's
constructor a string argument...which is the html. Build that string with a
StringBuilder object.
Put a PlaceHolder control on the aspx page and add a the new LiteralControl
to the PlaceHolder control. Something like this:

private void MakeTable(DataTable dt)
{
StringBuilder mytable = new StringBuilder("<table width=/"100%/">");
for each ( DataRow dr in dt )
{
mytable.Append(GetRow(dr));
}
mytable.Append("</table>");
myPlaceHolder.Controls.Add(new LiteralControl(myTable.ToString()));
}

private string GetRow(DataRow dr)
{
//do the processing on the row
}

// ~PJ

"Murtix Van Basten" <rdagdelenj31@comNO-SPAMcast.net> wrote in message
news:V6KcnVurUsQ2p2SjXTWJhg@comcast.com...
> Hi,
>
> I dont know it is doable, but I wanna ask it anyway.
>
> I am pulling 5 different data from a datatable row by row. So each row
> has 5 fields and row count is variable not a constant. So, each row's

fields
> will be shown in a table in a different design. That means, I cannot use
> DataGrid, because the view should be different. Here is the html:table
> structure fo each datarow:
>
> <table>
> for (int i=0;i<DataSet.Tables["mytable"].Rows.Count;i++)
> {
> DataRow row = DataSet.Tables["myTable"].Rows[i];
> // from here the html table's rows are being entered
> <tr>
> <td width=18%><img src=row[4].ToString()></td>
> <td colspan=2>row[2].ToString()</td>
> </tr>
> <tr>
> <td rowspan=2>&nbsp;</td>
> <td rowspan=2 width=54%>row[5].ToString()</td>
> <td width=28%>row[3].ToString()</td>
> </tr>
> <tr>
> <td>row[1].ToString</td>
> </tr>
> <tr>
> <td colspan=3><a href=details.aspx?dno=row[0].ToString()>Click

Here
> For More Info</a></td>
> </tr>
> }
> </table>
>
> As you have seen here, the table row count cannot be known, so I will
> have to create tablerows as much as the datarow goes.
>
> I have tried to do it with Rersponse.Write, but it is writing all of
> these on top of the page, and it is ruining the design. I have tried to

use
> the <asp:Table> object, but it needs the <asp:TableRow> and

<asp:TableCell>s
> to be declared at design time. I wanted to do it inline of the aspx page,

it
> has given alot of runtime errors regarding to the compilation. (Because I

am
> using VS.NET and I am writing the code behind, not in the aspx files.)
>
> So, how can I create these table rows on-the-fly ? Or I am kind of hoping
> that, there must be another command, that does similar thing

Response.Write
> command does, but it puts the code whereever I want to be put.
>
> Thanks and Regards.
>
> Murtix Van Basten
>
>
>
>




Murtix Van Basten 06-25-2003 07:19 AM

Re: creating on-the-fly asp:table in the code file
 
PJ,

Thank you very much. It is exactly what I was looking for.

Murtix.


"PJ" <pjwalNOSPAM@hotmail.com> wrote in message
news:#$90YauODHA.2476@TK2MSFTNGP10.phx.gbl...
> Create your table w/ the LiteralControl. The LiteralControl takes as it's
> constructor a string argument...which is the html. Build that string with

a
> StringBuilder object.
> Put a PlaceHolder control on the aspx page and add a the new

LiteralControl
> to the PlaceHolder control. Something like this:
>
> private void MakeTable(DataTable dt)
> {
> StringBuilder mytable = new StringBuilder("<table width=/"100%/">");
> for each ( DataRow dr in dt )
> {
> mytable.Append(GetRow(dr));
> }
> mytable.Append("</table>");
> myPlaceHolder.Controls.Add(new LiteralControl(myTable.ToString()));
> }
>
> private string GetRow(DataRow dr)
> {
> //do the processing on the row
> }
>
> // ~PJ
>
> "Murtix Van Basten" <rdagdelenj31@comNO-SPAMcast.net> wrote in message
> news:V6KcnVurUsQ2p2SjXTWJhg@comcast.com...
> > Hi,
> >
> > I dont know it is doable, but I wanna ask it anyway.
> >
> > I am pulling 5 different data from a datatable row by row. So each

row
> > has 5 fields and row count is variable not a constant. So, each row's

> fields
> > will be shown in a table in a different design. That means, I cannot use
> > DataGrid, because the view should be different. Here is the html:table
> > structure fo each datarow:
> >
> > <table>
> > for (int i=0;i<DataSet.Tables["mytable"].Rows.Count;i++)
> > {
> > DataRow row = DataSet.Tables["myTable"].Rows[i];
> > // from here the html table's rows are being entered
> > <tr>
> > <td width=18%><img src=row[4].ToString()></td>
> > <td colspan=2>row[2].ToString()</td>
> > </tr>
> > <tr>
> > <td rowspan=2>&nbsp;</td>
> > <td rowspan=2 width=54%>row[5].ToString()</td>
> > <td width=28%>row[3].ToString()</td>
> > </tr>
> > <tr>
> > <td>row[1].ToString</td>
> > </tr>
> > <tr>
> > <td colspan=3><a href=details.aspx?dno=row[0].ToString()>Click

> Here
> > For More Info</a></td>
> > </tr>
> > }
> > </table>
> >
> > As you have seen here, the table row count cannot be known, so I

will
> > have to create tablerows as much as the datarow goes.
> >
> > I have tried to do it with Rersponse.Write, but it is writing all of
> > these on top of the page, and it is ruining the design. I have tried to

> use
> > the <asp:Table> object, but it needs the <asp:TableRow> and

> <asp:TableCell>s
> > to be declared at design time. I wanted to do it inline of the aspx

page,
> it
> > has given alot of runtime errors regarding to the compilation. (Because

I
> am
> > using VS.NET and I am writing the code behind, not in the aspx files.)
> >
> > So, how can I create these table rows on-the-fly ? Or I am kind of

hoping
> > that, there must be another command, that does similar thing

> Response.Write
> > command does, but it puts the code whereever I want to be put.
> >
> > Thanks and Regards.
> >
> > Murtix Van Basten
> >
> >
> >
> >

>
>





All times are GMT. The time now is 01:01 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.