0
<asp:ListView ID="ListView1" runat="server" DataKeyNames="orderID" DataSourceID="SqlDataSource1">
<ItemTemplate>
<tr>
<td>
  <asp:Label ID="statusLabel" runat="server" Text='<%# Eval("status") %>' Visible="false"  />
</td>
<% 
  Label s = (Label)ListView1.FindControl("statusLabel");
  string status = s.Text;
  if (status == "0") {  //code here }
%>
</tr>
</ItemTemplate>
</asp:ListView>

如何在首页获取 statusLabel 文本?不是后面的代码。每行数据都会有不同的状态,所以我想根据状态显示按钮。任何解决方案都可以做到这一点?

4

3 回答 3

1

看起来您不需要获得标签;您只需要获取标签设置的值,您可以使用该Eval函数执行此操作。

如果有一定数量的按钮,您可以根据状态切换可见性:

<ItemTemplate>
    <asp:Label ID="statusLabel" runat="server" Text='<%# Eval("status") %>' Visible="false"  />
    <asp:Button ID="Button1" runat="server" Text="Test" Visible='<%# Eval("status") == "Open" ? true : false %>' />
    <asp:Button ID="Button2" runat="server" Text="Test Again" Visible='<%# Eval("status") == "Closed" ? true : false %>' />
</ItemTemplate>

如果情况比这更复杂,您可以使用PlaceHolder控件按状态对按钮进行分组:

<ItemTemplate>
    <asp:Label ID="statusLabel" runat="server" Text='<%# Eval("status") %>' Visible="false"  />
    <asp:PlaceHolder ID="plcOpenStatus" runat="server" Visible='<%# Eval("status") == "Open" ? true : false %>'>
        <!-- buttons for open status -->
    </asp:PlaceHolder>
    <asp:PlaceHolder ID="plcClosedStatus" runat="server" Visible='<%# Eval("status") == "Closed" ? true : false %>'>
        <!-- buttons for closed status -->
    </asp:PlaceHolder>
</ItemTemplate>    
于 2012-04-09T16:37:54.673 回答
0

您可以附加到 ItemDataBound 或 ItemCreated 事件,然后在那里执行代码。

有关示例,请参见此帖子 - http://www.toars.com/2010/11/listview-events-01/

于 2012-04-09T16:18:06.393 回答
0

内联执行业务逻辑通常是一个坏主意。但是,对于您的情况,您不需要访问 statusLabel 控件本身。您只需要在 if 语句中调用 Eval("status") 即可。

所以

string status = (string) Eval("status");
if (status == "0") { // etc }
于 2012-04-09T16:14:39.467 回答