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

Discussion in 'ASP .Net' started by Murtix Van Basten, Jun 25, 2003.

  1. 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;
    // 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, Jun 25, 2003
    #1
    1. Advertising

  2. Murtix Van Basten

    PJ Guest

    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" <> wrote in message
    news:...
    > 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;
    > // 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, Jun 25, 2003
    #2
    1. Advertising

  3. PJ,

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

    Murtix.


    "PJ" <> wrote in message
    news:#$...
    > 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" <> wrote in message
    > news:...
    > > 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;
    > > // 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, Jun 25, 2003
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. LIN

    creating ASPx Pages on the FLY

    LIN, Aug 2, 2003, in forum: ASP .Net
    Replies:
    2
    Views:
    418
  2. Maziar Aflatoun

    Creating a downloadable file on the fly

    Maziar Aflatoun, Dec 22, 2003, in forum: ASP .Net
    Replies:
    9
    Views:
    464
    JDModev
    May 10, 2004
  3. Stimp
    Replies:
    2
    Views:
    392
    Stimp
    Aug 23, 2004
  4. Ryan Ternier
    Replies:
    0
    Views:
    318
    Ryan Ternier
    Aug 4, 2005
  5. Brian

    Fly outmenu on the fly

    Brian, Apr 8, 2005, in forum: Javascript
    Replies:
    0
    Views:
    128
    Brian
    Apr 8, 2005
Loading...

Share This Page