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 に答える