webForumDet fria alternativet

if sats i DataList el DataGrid

.NET

6 svar · 902 visningar · startad av Nickemannen

Medlem sedan aug. 20003 575 inlägg
Frågan#1

Hur gör man smidigast en if sats i en datalist.

Vi säger att man t.ex. vill ha olika backgrunds färger för varannan
rad ?

Eller om det finns något värde i en utav svaren då skall man göra såhär. Osv..

Medlem sedan sep. 20011 914 inlägg
#2

Till bakgrundsfärgen skulle jag använda:
<ItemTemplate></ItemTemplate>
<AlternatingItemTemplate></AlternatingItemTemplate>

Medlem sedan juni 20011 732 inlägg
#3

Ska du ha olika färger varannan rad så skulle jag använda alternatingitemtemplates istället. Man ska överhuvudtaget försöka undvika den typen av logik i sina kontroller och skriva det i koden istället, håll isär presentation och kod.

red/ Dina hann först. :)

Medlem sedan aug. 20003 575 inlägg
#4

Om man t.ex. skall göra en gästbok.

och om personen inte har skrivit in sin email så skall det stå

Namn: Niclas

Annars

Namn <a href="mailto:nicke@ebid.se">Niclas</a>

Jag frågar detta för att hålla isär det :)

Medlem sedan sep. 20011 914 inlägg
#5

Använde denna kod till en gästbok. Där jag på .aspx sidan istället för <% container.dataitem %> la in placeholders. Om det fanns någon data i "gb_email" kolumnen i datatablen som var datakällan, så gjorde jag en hyperlink som jag la in i placeholdern. Ett sätt att lösa det på.

protected sub repMessages_itemDatabound(byval sender as object, byval e as repeateritemeventargs) handles repMessages.itemdatabound
   if e.item.itemtype = listitemtype.item then
      dim drw as DataRowView
      drw = DirectCast(e.item.dataitem,DataRowView)
      dim strEmail as string = drw("gb_email").tostring()
      if strEmail.length > 0 then
         dim hl as new hyperlink()
         with hl
            .ImageUrl  = "images/email.gif"
            .navigateUrl = "mailto:" & strEmail
            .target = "_blank"
         end with
         CType(e.item.Findcontrol("phTest"), placeholder).controls.add(hl)
      end if
   end if
end sub
Medlem sedan apr. 20012 266 inlägg
#6

Dino skrev:

Till bakgrundsfärgen skulle jag använda:
<ItemTemplate></ItemTemplate>
<AlternatingItemTemplate></AlternatingItemTemplate>

Ännu bättre är nog att köra med AlternatingItemStyle(?) då slipper du ha kopior av koden i ItemTemplate i AlternatingItemTemplate.

Medlem sedan juni 20011 732 inlägg
#7

Nickemannen skrev:

Om man t.ex. skall göra en gästbok.
och om personen inte har skrivit in sin email så skall det stå
Namn: Niclas
Annars
Namn <a href="mailto:nicke@ebid.se">Niclas</a>

Ett annat enkelt sätt att lösa det på är att anropa en funktion med nödvändiga inparametrar:

<% linkFunction(DataBinder.Eval(Container, "DataItem.Name").ToString(), DataBinder.Eval(Container, "DataItem.Email").ToString()) %>

I koden:

protected string linkFunction(string Name, string Email) {
  if(Email.Trim()=="") 
    return "<a href=mailto:" + Email + ">" + Name + "</a>";
  else 
    return Name;
}

Eller så gör du det ännu snyggare och returnerar en hyperlink istället så slipper du ha en massa html-gojja i koden, men du förstår principen. Som det diskuterats lite om så är den här metoden inte det ultimata ur systemresurssynpunkt men det är smidigt att göra i många sammanhang...

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