Avatar billede sashzaz Nybegynder
02. december 2004 - 11:44 Der er 3 kommentarer og
1 løsning

HTML tabel ud fra DataTable

Hej

Jeg skal lave en HTML tabel ud fra en DataTable. Metode hoved til metoden der gøre det ser sådan ud: public string DataSetToString(DataSet ds,bool headers, int colm);
ds giver de dataTable der skal laves laves til html tabeller, header er om der skal collonne overskrifter, colm er antal colloner pr række.

Det har lykkes mig at lave tabellen næsten færdig, dog er der en problem: Hvis en tabel har 8 colloner og jeg har valgt colm parameteret til at være 4. Så splittes tabellen op som den også skal gøre, men idet at der i den anden halvdel af tabellen også skal en ID collone med fra den første halvdel, bliver den anden halvdel på 5 colloner og ikke på 4 som jeg valgte.

Jeg kunne tænke mig at den overskydene colonne sammen med ID colonne blev splittet op i en tredje halvdel af tabelen. Så jeg ikke havde nogen rækker med over flere colonner end det valgte i metoden.
Avatar billede sashzaz Nybegynder
02. december 2004 - 12:15 #1
Her er metoden:

public string DataSetToString(DataSet ds, bool headers,int colm)
        {       
            StringBuilder sb = new StringBuilder();

            for(int i=0;i<ds.Tables.Count;i++)
            {
                int count = 0;
                int graense = colm;
                int hTaeller = colm;
                int dTaeller = colm;

                if(ds.Tables[i].Columns.Count<colm)
                {
                    graense = ds.Tables[i].Columns.Count;
                }

                for(int n=0;n<Math.Ceiling(Convert.ToDouble(ds.Tables[i].Columns.Count)/Convert.ToDouble(colm));n++)
                {
                    hTaeller= colm*n;
                    dTaeller= colm*n;
                    int te = n;
                    sb.Append("<table border=\"1\">");
           
                    if (headers)
                    {   
                       
                        sb.Append("<tr>");
                        if(hTaeller!=0)
                        {
                            sb.Append("<td bgcolor=#dcdcdc><b>"  + ds.Tables[i].Columns[0].ColumnName + "</b></td>");

                            for(int m=count;m<graense-1;m++)
                            {
                                string tempo = ds.Tables[i].Columns[m].ColumnName;

                                sb.Append("<td bgcolor=#dcdcdc><b>"  + ds.Tables[i].Columns[m].ColumnName + "</b></td>");
                            }
                        }
                            //write column headings
                        else if(hTaeller==0)
                        {
                            for(int s=count;s<graense;s++)
                            {
                                string t = ds.Tables[i].Columns[s].ColumnName;
                                sb.Append("<td bgcolor=#dcdcdc><b>"  + ds.Tables[i].Columns[s].ColumnName + "</b></td>");
                            }

                           
                        }
                        sb.Append("</tr>");
                    }
                    //write table data
                    for(int x=0;x<ds.Tables[i].Rows.Count;x++)
                    {
                        sb.Append("<tr>");
                        if(dTaeller!=0)
                        {
                            int taeller = -1;
                            ArrayList graenseMinusTaeller= new ArrayList();
                            sb.Append("<td>"  + ds.Tables[i].Rows[x][0] + "</td>");                           
                            for(int k =count;k<graense-1;k++)
                            {
                            taeller++;
                            sb.Append("<td>"  + ds.Tables[i].Rows[x][k] + "</td>");
                           
                            }
                        }
                        else if(dTaeller==0)
                        {
                            for(int l =count;l<graense;l++)
                            {
                                sb.Append("<td>"  + ds.Tables[i].Rows[x][l] + "</td>");

                            }
                        }
                        sb.Append("</tr>");
                    }
                    sb.Append("</table>"+"<BR><BR>");
                    count+=colm;

                    if((graense + colm)>=ds.Tables[i].Columns.Count)
                    {
                        graense+=(ds.Tables[i].Columns.Count)-graense;    
                    }
                   
                    else if((graense + colm)!= ds.Tables[i].Columns.Count)
                    {
                        graense+=colm;
                    }
                }
               

                }
               
           
        return sb.ToString();
        }
Avatar billede sashzaz Nybegynder
02. december 2004 - 14:26 #2
Problem solved
Avatar billede sashzaz Nybegynder
02. december 2004 - 14:29 #3
Er der nogen der skal brug lign. tabel så sige til. Laver html tabeller ud fra DataTabeller fra en DataSet og laver dem til word soc, så de kan vises som i normal document visning og egnet til udprintning til printeren.
Avatar billede sashzaz Nybegynder
02. december 2004 - 14:31 #4
Doc istedet for soc
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester