WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   .NET skulle behöva smarte kod än detta.. (https://www.wn.se/forum/showthread.php?t=1062390)

naak2803 2014-07-25 12:01

.NET skulle behöva smarte kod än detta..
 
Hello WN:are!

Jag är ute efter ett mer rent kod än detta:
Någon som har lust att hjälpa till?

Kod:

int iCount = 100;

        string sHtml = "<table cellpadding='0' cellspacing='0' border='0'>";

        for (int i = 1; i < iCount + 1; i++)
        {
            if (i == 1 || i == 21 || i == 41 || i == 61)
                sHtml += "<tr>";

            sHtml += "<td>";
            sHtml += "<img src='http://lorempixel.com/100/100/people/' style='margin-top:-3px'>";
            sHtml += "</td>";

            if (i == 20 || i == 40 || i == 60)
                sHtml += "</tr>";
        }
        sHtml += "</table>";

        LiteralImageGrid.Text = sHtml;

https://dotnetfiddle.net/ISl5RJ

Conny Westh 2014-07-25 22:13

Om jag fattat din avvsikt så vill du använda "Modulus"....

Kod:

int iCount = 100;

        string sHtml = "<table cellpadding='0' cellspacing='0' border='0'>";

        for (int i = 1; i < iCount + 1; i++)
        {
            if (((i-1) % 20) == 0)
                sHtml += "<tr>";

            sHtml += "<td>";
            sHtml += "<img src='http://lorempixel.com/100/100/people/' style='margin-top:-3px'>";
            sHtml += "</td>";

            if (i % 20 == 0 )
                sHtml += "</tr>";
        }
        sHtml += "</table>";

        LiteralImageGrid.Text = sHtml;


jonny 2014-07-27 09:09

Måste det vara en tabell? I annat fall kan du generera någon form av containers (divar?) med "float: left" och slipper bry dig om att generera kod för radbrytningar.

Annars kan man ju göra något åt det här hållet...

Kod:

        protected string imageTable()
        {
            int imagesTotal = 100;
            int imagesPerRow = 20;

            StringBuilder htmlTable = new StringBuilder();

            htmlTable.Append("<table>");
            int imageCount = 0;
            while (imageCount < imagesTotal)
            {
                htmlTable.Append("<tr>");
                for (int cell = 0; cell < imagesPerRow; cell++)
                {
                    if (imageCount == imagesTotal)
                    {
                        break;
                    }
                    htmlTable.Append("<td>");
                    htmlTable.Append("<img src=\"http://lorempixel.com/100/100/people/\"/>");
                    htmlTable.Append("</td>");
                    imageCount++;
                }
                htmlTable.Append("</tr>");
            }

            return htmlTable.ToString();
        }


terbon 2014-09-17 21:29

Halvt offtopic:
Skulle du kunna ge lite mer information i vilket syfte som du behöver göra detta?
Det känns som att det är väldigt få tillfällen som detta skulle vara en bra approach till att populera en table.

Det måste ju finnas en anledning till att du vill ha 20 kolumner? Är det olika data i varje kolumn? I så fall borde ju approachen snarare vara att genera en rad per post i tabellen?

Om det inte är tabulär data som du ska presentera så bör du ju inte returnera en table.


Alla tider är GMT +2. Klockan är nu 08:27.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson