webForumDet fria alternativet

PadLeft är död...

.NET

1 svar · 313 visningar · startad av Dino

Medlem sedan sep. 20011 914 inlägg
Frågan#1

...i mina ögon. Har stirrat mig trött på detta. Nedan kod är väl ganska självförklarande.

        private void BindList()
        {
            List<Category> col = Category.GetAllCategories();

            if (col == null || col.Count == 0)
               return;

            BuildTree(col, 0);
        }

        private void BuildTree(List<Category> col, int depth)
        {
            foreach (Category c in col)
            {
                [red][B]ddlParent.Items.Add(new ListItem(c.Title.PadLeft(depth, '-'), c.Id.ToString()));[/B][/red]

                if (c.HasChilds)
                {
                    depth++;
                    BuildTree(c.Childs, depth);
                    depth--;
                }
            }
        }

Det som krånglar är att c.Title.PadLeft(depth, '-') inte lägger till något.
Det önskade resultatet i detta fall skall vara:
AAA
-AAA1
-AAA2
BBB

men blir
AAA
AAA1
AAA2
BBB

Har kört en Response.Write(depth.ToString() + "<br/>") och den skriver ut:
0
1
1
0

vilket är helt riktigt.

Någon som kan peka ut felet???

Medlem sedan dec. 2004135 inlägg
#2

Njae, det är inte riktigt så PadLeft fungerar. Se dokumentationen på MSDN om PadLeft.

Det du antingen får göra är att skriva c.Title.PadLeft(depth + c.Title.Length, '-'). Eller så skriver du new string('-', depth) + c.Title istället.

257 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)