webForumDet fria alternativet

Container.dataitem i repeater

.NETur .NET

5 svar · 210 visningar · startad av Dino

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

Har en repeater:

...
<itemTemplate>
   <tr>
      <td>
      <%# level(Container.dataitem(3)) %> 
      </td>
   </tr>
</itemTemplate>
<alternatingItemTemplate>
   <tr>
      <td>
      <%# level(Container.dataitem(3)) %> 
      </td>
   </tr>
</alternatingItemTemplate>
...

Skulle behöva att istället för trean så skulle det vara en variable som plusades på med 1. Hur gör jag?

Medlem sedan juni 20011 732 inlägg
#2

Räkna upp dem innan du fyller din repeater istället, exempelvis om du har ett dataset gör du så här:

ds.Tables["tabell"].Columns.Add(new DataColumn("Counter", typeof(Int32)));
for (int i=0; i<ds.Tables["tabell"].Rows.Count; i++) {
  ds.Tables["tabell"].Rows[i]["Counter"] = i + 1;
}

<itemTemplate>
   <tr>
      <td>
      <%# level(DataBinder.Eval(Container.DataItem, "Counter")) %> 
      </td>
   </tr>
</itemTemplate>
Medlem sedan sep. 20011 914 inlägg
#3

Hmm, tror jag förstår tanken i det men jag kör ut datan genom en datareader direkt in i repeatern så jag använder inte något dataset. Finns det något annat alternativ.

Medlem sedan mars 20002 836 inlägg
#4

i en datareader kan du oxå få fram datan genom att ange fältnamnet:


strName = dr("FieldForName")

då i din datareader så får du helt enkel skriva så här:

<alternatingItemTemplate>
   <tr>
      <td>
      <%# level(Container.dataitem, "FieldForName") %> 
      </td>
   </tr>
</alternatingItemTemplate>

Det är det som gör den "mindre" dynamisk ....

cya,
PatrikB

Medlem sedan juni 20011 732 inlägg
#5

Hm, problemet är väl att det inte finns något bra sätt att komma ihåg värden från tidigare rader direkt i din repeater, du bör alltid göra den typen av logik i koden på något sätt. Kan du inte räkna upp värdet i funktionen "level" på nåt sätt, exempelvis genom att spara undan senaste värdet i en session och plussa på med 1, typ:

level {
  session = session + 1;
  return session;
}

Någon annan kanske har en bättre lösning?

Medlem sedan sep. 20011 914 inlägg
#6

PatrikB förslag går inte då fältet växlar från 2 upp till 8.
NETwork förslag skulle ju kunna funka. Får försöka modifiera det lite.

Får kolla över det hela och se om jag kan göra en bättre SQL fråga eller om jag skall ta en omväg och köra in det i ett dataset. Tack i alla fall. :)

129 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)