0

我正在尝试在 Asp.Net ListView 的源视图中输入逻辑。问题是程序在执行“If (isItTrue(test))”时在屏幕上写入 false 或 true。有谁知道如何解决这个问题?

   <%# test= Eval("testId")%>
          <%
              If (isItTrue(test)) Then

              %>
           <asp:Button ID="btnTest"  runat="server" Text="Like" />
           <%
           Else
               %>
               <asp:Label runat="server" Text="hello" </asp:Label>

           <%
           End If
               %>
4

2 回答 2

1

您可以使用ItemDataBound检查这样的信息并使用您的条件显示或隐藏控件。在你的代码中尝试这样的事情:

protected void ListViewTest_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    // if it is data item
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        // call your function
        if (isItTrue("test"))
        {
            // show the button
            e.Item.FindControl("btnTest").Visible = true;
        }
        else 
        {
            // show the label
            e.Item.FindControl("lblTest").Visible = true;
        }
    }
}

在您的 Listview 中,您可以执行类似的操作,设置事件并在占位符上添加控件

<asp:ListView ID="ListViewTest" DataSourceID="..." OnItemDataBound="ListViewTest_ItemDataBound" runat="server">
    <LayoutTemplate>
      <table>
        <tr>
            <th>Column Name</th>
        </tr>
        <tr runat="server" id="itemPlaceholder" />
      </table>          
    </LayoutTemplate>
    <ItemTemplate>
      <tr style="background-color: #CAEEFF" runat="server">
        <td>
           <%-- both controls are here --%>     
          <asp:Button ID="btnTest" runat="server" Visible="false" Text="Like"></asp:Button>
          <asp:Label ID="lblTest"  runat="server" Visible="false" Text="hello"></asp:Label>
        </td>
      </tr>
    </ItemTemplate>
  </asp:ListView>
于 2012-12-28T17:33:51.917 回答
0

您确定不是这一行: <%# test= Eval("testId")%>那是在输出中写入 true 或 false 吗?

于 2012-12-28T17:42:42.840 回答