<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文本?没有代码背后。 每一行数据都会有不同的状态, 所以我想根据状态显示按钮。 任何解决方案都可以完成这项工作吗?
答案 0 :(得分: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>
答案 1 :(得分:0)
内联业务逻辑通常是一个坏主意。但是,对于您的情况,您不需要访问statusLabel控件本身。您只需在if语句中调用Eval(“status”)。
所以
string status = (string) Eval("status");
if (status == "0") { // etc }
答案 2 :(得分:0)
您可以附加到ItemDataBound或ItemCreated事件,然后在那里执行代码。
请参阅此帖子以获取示例 - http://www.toars.com/2010/11/listview-events-01/