hej! Du skulle kunna kapsla in dina block i literals som du sätter Visible=true/false på. <code> Hej! jag löste det så härIf-sats i en repeater
Jag vill ha en if-sats i en repeater där om ett bool värde är sant eller falskt så skall olika rader visas.
Ex:
<code>
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="AccessDataSource1">
<HeaderTemplate>
<table width="430" border="0" cellpadding="0" cellspacing="0">
</HeaderTemplate>
<ItemTemplate>
<%
bool x = Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "loggedin"));
if (x == false)
{ %>
<tr>
<td width="189" height="99" valign="top"><%# DataBinder.Eval(Container.DataItem, "fname")%> </td>
<td width="241" valign="top"><%# DataBinder.Eval(Container.DataItem, "lname")%> </td>
</tr>
<tr>
<td height="110" colspan="2" valign="top"><%# DataBinder.Eval(Container.DataItem, "id")%> </td>
</tr>
<tr>
<td height="1"></td>
<td></td>
</tr><% }
else
{
%><tr>
<td width="430" height="99" valign="top"><%# DataBinder.Eval(Container.DataItem, "fname")%></td>
</tr>
<tr>
<td height="29" valign="top"><%# DataBinder.Eval(Container.DataItem, "lname")%></td>
</tr>
<tr>
<td height="81" valign="top"><%# DataBinder.Eval(Container.DataItem, "id")%></td>
</tr><% } %>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</code>
problemet är att få ifsatsen att fungerar
<code>
<%
bool x = Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "loggedin"));
if (x == false)
{ %>
</code>
förslag på hur jag skall göra för att få det att fungera
/TyronneSv: If-sats i en repeater
Sv: If-sats i en repeater
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="AccessDataSource1">
<HeaderTemplate>
<table width="430" border="0" cellpadding="0" cellspacing="0">
</HeaderTemplate>
<ItemTemplate>
<asp:literal runat="server" id="litNotLoggedin" visible='<%#iif(convert.toboolean(eval("loggedin"))=true,false,true)%>'>
<tr>
<td width="189" height="99" valign="top"><%# DataBinder.Eval(Container.DataItem, "fname")%> </td>
<td width="241" valign="top"><%# DataBinder.Eval(Container.DataItem, "lname")%> </td>
</tr>
<tr>
<td height="110" colspan="2" valign="top"><%# DataBinder.Eval(Container.DataItem, "id")%> </td>
</tr>
<tr>
<td height="1"></td>
<td></td>
</tr>
</asp:literal>
<asp:literal runat="server" id="litLoggedin" visible='<%#iif(convert.toboolean(eval("loggedin"))=true,true,false)%>'>
<tr>
<td width="430" height="99" valign="top"><%# DataBinder.Eval(Container.DataItem, "fname")%></td>
</tr>
<tr>
<td height="29" valign="top"><%# DataBinder.Eval(Container.DataItem, "lname")%></td>
</tr>
<tr>
<td height="81" valign="top"><%# DataBinder.Eval(Container.DataItem, "id")%></td>
</tr><
</asp:literal>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</code>
Nu ska vi se, har inte provkört detta.
Det IIF-satserna gör är följande:
Den första kontrollerar värdet för "loggedin". Om det värdet är true kommer Visible sättas till False på första div-partiet. Om "loggedin" är false kommer första div-partiet visas.
Och den andra IIF-satsen gör precis tvärtom.
Förhoppningsvis :)Sv:If-sats i en repeater
Får följande meddelande:
<code>
Error 2 'System.Web.UI.WebControls.Literal' does not allow child controls. C:\Inetpub\wwwroot\Web_Grizzlys\test.aspx 21
</code>
och det är på första TD raden den stannar
<code>
<asp:literal runat="server" id="litNotLoggedin" visible='<%#iif(convert.toboolean(eval("loggedin"))=true,false,true)%>'>
<tr>
<td width="189" height="99" valign="top"><%# DataBinder.Eval(Container.DataItem, "fname")%> </td>
<td width="241" valign="top"><%# DataBinder.Eval(Container.DataItem, "lname")%> </td>
</tr>
</code>
en undran bara IIF - funktionen är inet det en VB funktion. Undrar bara eftersom jag kör med C# kompilation.
/TYronneSv: If-sats i en repeater
<code>
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="AccessDataSource1">
<HeaderTemplate>
<table width="430" border="0" cellpadding="0" cellspacing="0">
</HeaderTemplate>
<ItemTemplate>
<asp:Panel runat="server" id="litNotLoggedin" visible='<%#(Convert.ToBoolean(DataBinder.Eval(Container.DataItem,"loggedin"))==false ? false:true)%>'>
<tr>
<td width="189" height="99" valign="top"><%# DataBinder.Eval(Container.DataItem, "fname")%> </td>
<td width="241" valign="top"><%# DataBinder.Eval(Container.DataItem, "lname")%> </td>
</tr>
<tr>
<td height="110" colspan="2" valign="top"><%# DataBinder.Eval(Container.DataItem, "loggedin")%> </td>
</tr>
<tr>
<td height="1"></td>
<td></td>
</tr>
</asp:Panel>
<!-- String text = (A = B) ? "truePart" : "falsePart";
->
<asp:Panel runat="server" id="litLoggedin" visible='<%#(Convert.ToBoolean(DataBinder.Eval(Container.DataItem,"loggedin"))== true ? true:false)%>'>
<tr>
<td width="430" height="99" valign="top"><%# DataBinder.Eval(Container.DataItem, "fname")%></td>
</tr>
<tr>
<td height="29" valign="top"><%# DataBinder.Eval(Container.DataItem, "lname")%></td>
</tr>
<tr>
<td height="81" valign="top"><%# DataBinder.Eval(Container.DataItem, "loggedin")%></td>
</tr><
</asp:Panel>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</code>
tack för hjälpen