---
title: "If sats i datalist?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/73256-if-sats-i-datalist"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Arne"
published: "2003-04-05T19:32:57.000Z"
updated: "2003-04-07T21:22:22.000Z"
replies: 16
views: 506
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/73256-if-sats-i-datalist"
---

# If sats i datalist?

## #1 — Arne, 2003-04-05T19:32Z

Jag har en datalist jag vill köra en if sats i, men får problem. Jag vill kolla om #DataBinder.Eval(Container.DataItem, "ProductName") innehåller ett värde i en if sats. 
I gamla asp gjorde jag så här:

```
 <% If RS("ProductName") <> "" Then %> Text här <%Else %>Ny text här<% End If %>
```

Går det att göra något liknande i en datalist??

Permalänk: https://www.webforum.nu/p/73256

## #2 — cyprys, 2003-04-05T19:40Z

Lägg in en funktion

```
Function CheckIfEmpty(x as string) as string
if x = "" then
     return "Buu"
else
     return "Wee"
end if
end Function
---- datalist ---
<%# CheckIfEmpty(container.dataitem("Productname")) %>
```

Permalänk: https://www.webforum.nu/p/1001366

## #3 — Arne, 2003-04-05T20:17Z

Tackar

Fungerar exakt som jag tänkt mig.............

Permalänk: https://www.webforum.nu/p/1001388

## #4 — Arne, 2003-04-06T10:17Z

DBNull

Ett litet problem dök upp.
Om jag hämtar från till exempel ett datum fält i sql databasen så har det värdet \<NULL\>, då får jag felmeddelandet:

Exception Details: System.InvalidCastException: Cast from type 'DBNull' to type 'String' is not valid.

Jag har provat få till det med det vills sig inte, går det att komma runt?

Permalänk: https://www.webforum.nu/p/1001614

## #5 — cyprys, 2003-04-06T10:42Z

```
if container.dataitem("Productname").GetType().ToString() = "System.DBNull" then
return "Buu"
else
return "Wee"
end if
```

Permalänk: https://www.webforum.nu/p/1001638

## #6 — renholm, 2003-04-06T13:20Z

I stället för att köra .GetType().ToString() har jag för mig att man kan köra med 

```
if (container.dataitem("Productname") is System.DBNull)
```

Permalänk: https://www.webforum.nu/p/1001785

## #7 — Arne, 2003-04-06T15:06Z

declarera

Hmmm, Compiler Error Message: BC30451: Name 'Container' is not declared.

Jag provade Dim Container As String men det var ingen höjdare...

Hur göra här? (ursäkta dumma frågor;-)

Permalänk: https://www.webforum.nu/p/1001864

## #8 — renholm, 2003-04-06T16:28Z

Mer kod tack, med verkar som om du försöker komma åt container objectet i någon funktion vilket inte fungerar, conatiner fungerar bara i t.ex en datalist eller datagrid och skall inte declareras

Permalänk: https://www.webforum.nu/p/1001918

## #9 — Arne, 2003-04-06T16:47Z

Kommer här

```
<ItemTemplate>
<table width="100%" cellspacing="0" cellpadding="2" align="center">
  <tr> 
    <td width="71%"><small><b><%# DataBinder.Eval(Container.DataItem, "namn")%>,</b> <%# DataBinder.Eval(Container.DataItem, "ort")%></small></td>
    <td width="7%" align="center"><a href="kedit1.asp?medlemsid=<%# DataBinder.Eval(Container.DataItem, "medlemsid")%>&annons=<%# DataBinder.Eval(Container.DataItem, "id")%>" onClick="window.open(this.href,'myWin','height=360,width=450,resizable,scrollbars,'); return false;"><img src="../picture/edit.gif" width="15" height="16" border="0" alt="Redigera  <%# DataBinder.Eval(Container.DataItem, "namn")%>s inl&auml;gg"></a></td>
    <td width="7%" align="center"><a href="mailto:<%# DataBinder.Eval(Container.DataItem, "epost")%>"><img src="../picture/email.gif" width="16" height="15" border="0" alt="Skicka e-post till  <%# DataBinder.Eval(Container.DataItem, "namn")%>"></a></td>
    <td width="15%" align="center"><small><%# DataBinder.Eval(Container.DataItem, "formdatum")%></small></td>
  </tr>
  <tr> 
    <td width="71%"><small><img src="../picture/tel.gif" width="15" height="12" alt="Ring till annons&ouml;ren">&nbsp;    
      <%# DataBinder.Eval(Container.DataItem, "telefon")%>,&nbsp; <%# DataBinder.Eval(Container.DataItem, "mobil")%></small></td>
    <td colspan="3" align="right">
```

Och här är strängen som strular:

```
<% If container.dataitem("datum1").GetType().ToString() = "System.DBNull" then %>Text här <%Else %>Ny text här<% End If %>
```

```
</td>
  </tr>
  <tr> 
    <td colspan="4"><%# ConvertLinks(radbryt(DataBinder.Eval(Container.DataItem, "annons"))) %></td>
  </tr>
</table>				
    </ItemTemplate>
```

Om du behöver mer kod kan jag maila dokumentet till dig..........

Permalänk: https://www.webforum.nu/p/1001933

## #10 — renholm, 2003-04-06T20:13Z

Kan vara så att den är känslig för stora och små bokstäver, testa med Container.DataItem i stället för container.dataitem.

Permalänk: https://www.webforum.nu/p/1002098

## #11 — Arne, 2003-04-06T22:02Z

Hjälpte inte

Tyvärr så hjälpte inte det. Hmmm konstigt.........

Permalänk: https://www.webforum.nu/p/1002242

## #12 — NETwork, 2003-04-07T07:17Z

En chansning, ska det inte vara "is" i vb?

```
<% If container.dataitem("datum1").GetType().ToString() [b]IS[/b] "System.DBNull" then %>Text här <%Else %>Ny text här<% End If %>
```

Jag har sagt det förut och jag säger det igen, ha aldrig den här typen av logik i presenationslagret. Gör en funktion som tar in värdet och som sedan returnerar det önskade resultatet istället! :)

Permalänk: https://www.webforum.nu/p/1002397

## #13 — Arne, 2003-04-07T07:31Z

Function

Svara gärna varför för en okunnig så jag blir en erfarenhet rikare, och hur skulle den funktionen se ut?

cyprys Function CheckIfEmpty fungerar kanon, men inte om jag har \<Null\> i sql databasen

Permalänk: https://www.webforum.nu/p/1002402

## #14 — Dino, 2003-04-07T07:56Z

```
function check(grr as string) as string
   if grr = "" then
      return "Nä nu jävlar"
   else
      return grr
   end if
end function
------------------------
<%# check(Container.DataItem("datum").tostring()) %>
```

Permalänk: https://www.webforum.nu/p/1002421

## #15 — P, 2003-04-07T08:16Z

ds.tables(0).rows(0)("lala") Is DbNull and
ds.tables(0).rows(0)("lala") = ""
Then osv .... 
nånting sådant fungerar om du kör med dataset.

Permalänk: https://www.webforum.nu/p/1002435

## #16 — Dino, 2003-04-07T08:59Z

Om du inte vill använda den fula data binding containers koden så kan du använda denna kod istället.

```
private sub repTest_itemDatabound(byval sender as object, byval e as repeateritemeventargs)
   select case e.item.itemtype
      case listitemtype.item, listitemtype.alternatingitem
         dim drv as DataRowView
         drv = DirectCast(e.item.dataitem, DataRowView )
         dim strName as string = drv("g_name").tostring
         dim lc as new literal()
         if strName = "" then                    
            lc.text = " - " & "----------Ingen data----------- -"
         else
            lc.text = " - " & strName
         end if
         CType(e.item.Findcontrol("phTest"), placeholder).controls.add(lc)
   end select
end sub
-----------------------
<asp:Repeater id="repTest" runat="server" OnItemDataBound="repTest_itemDatabound">
<ItemTemplate>
   <tr>
      <td>
         <asp:PlaceHolder id="phTest" runat="server"/>
      </td>
  </tr>
</ItemTemplate>
</asp:Repeater>
```

Permalänk: https://www.webforum.nu/p/1002456

## #17 — Arne, 2003-04-07T21:22Z

Äntligen

Det var \<%# check(Container.DataItem("datum").tostring()) %\> som löste det hela med Null värdet. Det som skulle läggas till var .tostring()

Tack för hjälpen....

Permalänk: https://www.webforum.nu/p/1003008

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/73256-if-sats-i-datalist
