Avatar billede henrik_40 Nybegynder
10. august 2007 - 18:16 Der er 14 kommentarer og
1 løsning

if then else i repeater

Hej
Jeg vil gerne i en Repeater kunne bestemme at et checked-felt skal være checked hvis databaseopslaget ikke er NULL. Ud af mange forsøg har jeg forsøgt mig er dette et af dem:


<asp:Repeater runat="server" ID="LocalNewsLetters" >
                    <ItemTemplate>
                   
              <table border="0" cellpadding="0" cellspacing="0" style="table-layout: fixed">
                        <tr>
                            <td width="25" height="20">
                                <input id="Checkbox1" type="checkbox" "<%# Eval("Undermedlem") != 'null' ? "checked" : "checked"%>" runat="server" value="ID" name="ID" />
                            <td width="405">

serverkode forkert udført, er svaret.
Hvordan gør man?
/henrik
Avatar billede henrik_40 Nybegynder
10. august 2007 - 18:19 #1
Her er de begge "checked", det er bare en panikreaktion, der skal stå:
<%# Eval("Undermedlem") != 'null' ? "checked" : ""%>
Avatar billede dr_chaos Nybegynder
10. august 2007 - 18:51 #2
prøv med
checked='<%# (Eval("Undermedlem") != null ? true : false)%>'

du skal kigge på det som kode der kan kompileres
altså (object!= null ? true:false)
Avatar billede henrik_40 Nybegynder
10. august 2007 - 19:13 #3
ok, det forstår jeg, men problemet er så yderligere - i dette tilfælde - at du attributten Checked ikke kan benævnet true eller false, altså skal jeg have en streng som viser "checked" eller "". :-(
Avatar billede henrik_40 Nybegynder
10. august 2007 - 19:27 #4
Har forsøgt mig med forskellige variationer af <asp:checkedbox> (der er det true/false som gælder):

  <asp:CheckBox ID="Checkbox1"runat="server" Checked=<%# (Eval("Undermedlem")  !null) ? "true" : "false" %> />
Dutter ikke :-(
Avatar billede dr_chaos Nybegynder
10. august 2007 - 19:37 #5
jamen du skal bruge true:false og ikke "true" :"false"
Se evt her:
http://www.w3schools.com/aspnet/prop_webcontrol_checkbox_checked.asp
Avatar billede henrik_40 Nybegynder
10. august 2007 - 19:47 #6
Den version har jeg også prøvet, den vil ikke kompilere:
<asp:CheckBox ID="Checkbox2"runat="server" Checked=<%# (Eval("Undermedlem")  !null) ? true : false %> />

Som dit link skriver: Hvis jeg skulle gøre det "manuelt" skulle der stå:
<asp:CheckBox ID="Checkbox2"runat="server" Checked="true" />
Avatar billede dr_chaos Nybegynder
10. august 2007 - 20:33 #7
(Eval("Undermedlem")  !null) ? true : false er ikke gyldig du mangler
(Eval("Undermedlem") = !null) ? true : false
Avatar billede dr_chaos Nybegynder
10. august 2007 - 20:33 #8
sådan her
(Eval("Undermedlem") =!null) ? true : false
Avatar billede henrik_40 Nybegynder
10. august 2007 - 20:51 #9
Det er en trykfejl fra min side. Lig-med var taget med. Har ligeledes prøvet med > 2 og lign. i tilfælde af det var noget med null som ikke gik igennem. Følgende er prøvet og virker ikke:
  <asp:CheckBox ID="Checkbox1"runat="server" Checked=<%# (Eval("Undermedlem")  =! null) ? true : false %> />

(også >= 2)
Avatar billede -psycho- Nybegynder
10. august 2007 - 22:47 #10
Hvilken datatype er "Undermedlem" ??

Og hvorfor har du et sandt/falsk felt der kan være null ? lyder lidt mærkeligt enten er personen et undermedlem eller også er han ikke nogen grund til feltet kan være null ?

Nå men hvis det er f.eks en bit i mssql skulle følgende virke.

<asp:CheckBox ID="Checkbox1" runat="server" Checked='<%# (bool)Eval("Undermedlem") %>' />
Avatar billede -psycho- Nybegynder
10. august 2007 - 23:46 #11
Eller er "Undermedlem" en int (en referance til et eller andet andet) ? altså ikke bare et flag(sandt/falsk). Eller noget andet. ?
Avatar billede henrik_40 Nybegynder
13. august 2007 - 10:27 #12
psycho --> Jeg har desværre ikke kreerert databasen, så den er ikke særlig "køn". Undemedlem er en Int som ved værdien 1 indikerer at medlemmet har flere medlemmer på samme medlemsnummer. Desværre virker dit forslag ikke :


"
[InvalidCastException: Den angivne ændring er ugyldig.]
  ASP.nyhedsbrev_nyhedsbrev_medlem_aspx.__DataBinding__control9(Object sender, EventArgs e) in c:\inetpub\wwwroot\nyholders\nyhedsbrev\nyhedsbrev-medlem.aspx:164
  System.Web.UI.Control.OnDataBinding(EventArgs e) +99
  System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +206
  System.Web.UI.Control.DataBind() +12
  System.Web.UI.Control.DataBindChildren() +216
  System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +216
  System.Web.UI.Control.DataBind() +12
  System.Web.UI.WebControls.Repeater.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem) +130
  System.Web.UI.WebControls.Repeater.CreateControlHierarchy(Boolean useDataSource) +454
  System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e) +53
  System.Web.UI.WebControls.Repeater.DataBind() +72
  nyhedsbrev_nyhedsbrev_medlem.Page_Init(Object sender, EventArgs e) in c:\inetpub\wwwroot\nyholders\nyhedsbrev\nyhedsbrev-medlem.aspx.cs:140
  System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
  System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +34
  System.Web.UI.Control.OnInit(EventArgs e) +2117356
  System.Web.UI.Page.OnInit(EventArgs e) +9
  System.Web.UI.Control.InitRecursive(Control namingContainer) +321
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +692
"
Avatar billede -psycho- Nybegynder
13. august 2007 - 10:29 #13
nej hvis det er en int vil den nok ikke virke prøv

<asp:CheckBox ID="Checkbox1" runat="server" Checked='<%# Eval("Undermedlem") != DBNull.Value ? true : false %>' />

eller

<asp:CheckBox ID="Checkbox1" runat="server" Checked='<%# (Int32)Eval("Undermedlem") > 0 ? true : false %>' />
Avatar billede henrik_40 Nybegynder
13. august 2007 - 11:13 #14
Fantastisk - Det virker!
--> psycho læg et svar
og
--> dr chaos, tak for din tid. Du nærmede mig også løsningen :-)

/henrik
Avatar billede -psycho- Nybegynder
13. august 2007 - 11:40 #15
ok :)
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