asp.net
  • listview
  • 2012-04-09 20 views 0 likes 
    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テキストを表示するにはどうすればよいですか?コードビハインドではない。 データの各行は異なるステータスになります。 ステータスに基づいてボタンを表示します。 これを解決する方法はありますか?aspxページでListViewからASPコードに値を取得する方法

    +0

    なぜコードをコードに書きたくないのですか? – Pankaj

    +0

    設定された数のボタンがありますか?質問に例を追加できますか? –

    +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>  
    
    +0

    クールな男!魅力のように働く!どうもありがとうございます! –

    +0

    大歓迎です。それがうまくいった:) –

    0

    ビジネスロジックをインラインで実行することは、通常は悪い考えです。しかし、あなたのケースでは、statusLabelコントロール自体にアクセスする必要はありません。 if文のEval( "status")を呼び出すだけです。

    ので

    string status = (string) Eval("status"); 
    if (status == "0") { // etc } 
    
    +0

    あなたはなぜあなたの投稿に再度質問を書いていますか?ここに記載されているコードは質問の正確な複製です。 – Pankaj

    +0

    @PankajGarg、もっと慎重に読むことをお勧めします。著者はテキストを取得するためにコントロールにアクセスする必要があります。同じ範囲で彼はEvalからテキストを直接得ることができるので、必要ではありません。 –

    +0

    問題のコードと似ていないコードをここに記述してください。 – Pankaj

    0

    あなたはItemDataBoundまたはItemCreatedイベントにアタッチして、そこにコードを実行する可能性があります。

    は、例えば、この記事を参照してください - http://www.toars.com/2010/11/listview-events-01/

    関連する問題