asp.net
  • listview
  • 2012-04-09 38 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文本?沒有代碼背後。 每行數據都會有不同的狀態,所以我想根據狀態顯示按鈕。 任何解決方案都可以做到這一點?如何從ListView中檢索值到aspx頁面上的ASP代碼

    +0

    爲什麼你不想在代碼中編寫代碼? – Pankaj 2012-04-09 16:17:19

    +0

    是否有一組按鈕?你能爲你的問題添加一個例子嗎? – 2012-04-09 16:33:48

    +0

    ,因爲我想爲每一行顯示不同的按鈕 – 2012-04-09 16:45:51

    回答

    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

    酷男!像魅力一樣工作!非常感謝! – 2012-04-09 16:52:38

    +0

    非常歡迎。很高興它工作:) – 2012-04-09 17:03:10

    0

    做內聯業務邏輯通常是一個壞主意。但是,對於您的情況,您不需要訪問statusLabel控件本身。您所需要的只是在if語句中調用Eval(「狀態」)。

    所以

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

    爲什麼你在你的文章中再次寫這個問題?這裏提到的代碼是問題的完全重複。 – Pankaj 2012-04-09 16:18:29

    +0

    @PankajGarg,我建議你仔細閱讀。作者想要訪問控件以獲取其文本。這是沒有必要的,因爲在相同的範圍內,他可以直接從Eval獲取文本。 – 2012-04-09 16:21:00

    +0

    請在這裏寫一些代碼,它與問題中提到的代碼不相似。 – Pankaj 2012-04-09 16:22:17

    0

    你可以連接到的ItemDataBound或ItemCreated事件,然後在那裏執行代碼。

    看到這個職位的一個例子 - http://www.toars.com/2010/11/listview-events-01/

    相關問題