2016-07-14 35 views
1

Momentan habe ich eine Methode in meinem Code-Behind, die die Funktion zum Anzeigen oder Verbergen eines Bildes in einer bestimmten Spalte meiner Rasteransicht übernimmt abhängig von einem Datenwert. Unter denselben Bedingungen möchte ich eine Verknüpfungsschaltfläche in meinem Aktionsfeld, die in jeder Zeile angezeigt werden kann, ausblenden oder anzeigen. Im Moment stelle ich einfach die Sichtbarkeit der Link-Schaltfläche ein, die ich innerhalb der oben genannten Methode anzeigen/ausblenden möchte.Gibt es eine Möglichkeit, je nach Zeile eine Verknüpfungsschaltfläche in einem Aktionspanel zu verbergen/anzuzeigen

Aber natürlich wird die Sichtbarkeit für diese Link-Schaltfläche für alle Zeilen-Instanzen des Aktionsfeldes festgelegt. Wenn beispielsweise in der letzten Zeile in der Gridview diese Funktion ausgeführt wird (wie in jeder Zeile), aber dort die Bedingungen erfüllt sind, dass die Sichtbarkeit von linkbuttons falsch ist, dann ist die Sichtbarkeit für alle Zeilen falsch.

Gibt es eine Möglichkeit, die Sichtbarkeit für jede Zeile einzeln festzulegen?

einige der relevent ascx

 <div class="actionPanelWrapper" id="actionPanelItem"> 
      <div class="actionPanelOverlap"></div> 
      <div class="actionPanel"> 
       <ul> 
        <li> 
         <asp:LinkButton runat="server" ID="linkbuttonDetails" Text="Details" OnClick="actionPanel_Click" CommandName="details"></asp:LinkButton></li> 
        <li> 
         <asp:LinkButton runat="server" ID="linkbuttonViewApprovers" Text="View Approvers" OnClick="actionPanel_Click" CommandName="viewapprovers"></asp:LinkButton></li>      
        <li> 
         <asp:LinkButton runat="server" ID="linkbuttonActionEdit" Text="View Attachments" OnClick="actionPanel_Click" CommandName="attachments"></asp:LinkButton></li> 

        <li> 
         <asp:LinkButton runat="server" ID="linkbuttonComments" Text="View/Add Comments" OnClick="actionPanel_Click" CommandName="Comments"></asp:LinkButton></li> 
        <%--<li><a onclick="actionPanelEventHistoryShow(this);" href="#">View Request History</a></li>--%> 
        <li> <asp:LinkButton ID="lbEventHistory" runat="server" Text="View Request History" OnClick="actionPanel_Click" CommandName="history"></asp:LinkButton> </li> 
       </ul> 
      </div> 
     </div> 

Der Imagemethodenaufruf in der ich huckepack und versuchte, die Sichtbarkeitseinstellung Zugabe auf der Linkbutton wie erwähnt

Visible='<%# GetStatusImageVisibility(Eval("StatusName").ToString(), Eval("IsRejected").ToString())%>' 

Codebehind Methode

protected bool GetStatusImageVisibility(string Status, string IsRejected) 
    { 
     if (Status == "SAVED" && IsRejected != "1") 
     { 
      linkbuttonViewApprovers.Visible = false; 
      return false; 
     } 
     else 
     { 
      linkbuttonViewApprovers.Visible = true; 
      return true; 
     } 
    } 
+0

Technisch fügen Sie eine Logik in Ihrer 1. Methode hinzu, wo Sie Bilder verstecken/anzeigen, um dies zu tun. Konvertieren Sie Ihre Spalte mit der Verknüpfungsschaltfläche in eine Vorlagenspalte. Basierend auf Ihrer Bedingung in Ihrer OnRowDatabound-Methode mithilfe der GridViewRow.FindControl-Methode machen Sie die Verknüpfung sichtbar oder unsichtbar. – Kami

+0

Ich verstehe das Hinzufügen der Funktionalität in den Rowdatabount, aber muss ich das Action Panel in etwas anderes konvertieren? Ist das mit einem Action Panel möglich? –

+0

Nicht unbedingt. Können Sie einen Teil Ihres Codes teilen? – Kami

Antwort

0

Sie benötigen ein zusätzliches Modell (Entity), das eine Zeile darstellt, die Fügt jeder Zeile ein Sichtbarkeits-Flag hinzu, und Sie können dann jede Zeile einzeln festlegen. Wenn Sie die Daten zu und von BL- und DAL-Komponenten übertragen müssen, können Sie die AutoMapper Nuget Package verwenden, um zwischen Entitäten verschiedener Schichten zu mappen.

Hoffe es hilft!