webForumDet fria alternativet

Repeater och if-sats

.NET

6 svar · 326 visningar · startad av Dannelelle

Medlem sedan juni 200055 inlägg
Frågan#1

Håller på med att försöka visa innehållet i en databas på ett dynamiskt sätt i en repeater. Men jag får felmeddelandet "'Container' is not declared".

<asp:Repeater id="minRepeater" runat="server">
  <ItemTemplate>
    <% If DataBinder.Eval(Container.DataItem, "Properties")) = "checkbox" Then %>
     <input type="checkbox" name="chk" checked="True">
    <% End If %>
  </ItemTemplate>
</asp:Repeater>

Kan man bara skriva ut informationen som finns i Container eller? Skriver jag som nedan går det dock tokfint.

<asp:Repeater id="minRepeater" runat="server">
  <ItemTemplate>
    <%#DataBinder.Eval(Container.DataItem, "Properties"))%>
  </ItemTemplate>
</asp:Repeater>

Någon som vet hur man kommer förbi detta problem?
/mvh Daniel

Medlem sedan jan. 20011 140 inlägg
#2

Skriv en funtion som returnerar checkboxen

<asp:Repeater id="minRepeater" runat="server">
  <ItemTemplate>
    <%# funktion1(DataBinder.Eval(Container.DataItem, "Properties"))%>
  </ItemTemplate>
</asp:Repeater>

codebehind

Public function funktion1(input as string) as string
  if input = "checkbox" then
    return "<input type=""checkbox"" name=""chk"" checked=""True"">"
  end if
  return "Något annat"
end function
Medlem sedan juni 200055 inlägg
#3

Tack så mycket för svaret!
Jag gjorde en liten förenkling av mitt problem tidigare. Kan man på nåt liknande sätt göra så att man får info från två olika fält? Att man i funktionen hämtar ytterligare info alltså.

Typ:

<asp:Repeater id="minRepeater" runat="server">
  <ItemTemplate>
    <% If DataBinder.Eval(Container.DataItem, "Properties")) = "checkbox" Then %>
     <input type="checkbox" name="chk" checked="<%#DataBinder.Eval(Container.DataItem, "Status"))%>">
    <% End If %>
  </ItemTemplate>
</asp:Repeater>
Medlem sedan jan. 20011 140 inlägg
#4
    Public Function funktion1(ByVal input As String, ByVal input1 As String) As String
        Dim mystrb As New stringbuilder
        If input = "checkbox" Then
            mystrb.append("<input type=""checkbox"" name=""chk"" checked=""")
            mystrb.append(input1)
            mystrb.append(""">")
            Return mystrb.tostring
        End If
        Return "Något annat"
    End Function

aspx

<asp:Repeater id="minRepeater" runat="server">
  <ItemTemplate>
    <%# funktion1(DataBinder.Eval(Container.DataItem, "Properties"),DataBinder.Eval(Container.DataItem, "status"))%>
  </ItemTemplate>
</asp:Repeater>
Medlem sedan juni 200055 inlägg
#5

Tack så mycket... Kul att det finns folk som svarar så fort °<§:)

Medlem sedan apr. 20012 266 inlägg
#6

Jag skulle snarare skriva en funktion som retunera i fall checkboxen skall synas eller ej. Dock är kanske detta endast relevant i fall du vill ha en serverkontrollerad checkbox.

Medlem sedan juni 200055 inlägg
#7

Jag hade tänkt använda de där if-satserna till att skapa olika typer av formulärkomponenter beroende på värde i databasen. Alltså, ifall det står "Boolean" skapas en checkbox och står det "Integer" skapas en textbox osv.

268 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)