有没有办法隐藏/显示操作面板上的链接按钮,具体取决于每一行

时间:2016-07-14 18:58:39

标签: c# asp.net panel ascx

目前我在我的代码隐藏中有一个方法,它根据数据值处理在网格视图的某一列中显示或隐藏图像的功能。在这些相同的条件下,我想隐藏或显示我的操作面板中可以在每一行上显示的链接按钮。现在我只是设置我想在同一上述方法中显示/隐藏的链接按钮的可见性。

但当然会发生什么,它会为操作面板的所有行实例设置该链接按钮的可见性。例如,如果在gridview的最后一行,该函数被制定(就像它在每一行上一样)但是满足条件,链接按钮的可见性为false,那么所有行的可见性都是假的。

有没有办法每行单独设置可见性?

一些相关的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>

ImageButton Method调用,我在其中搭载并尝试在链接按钮上添加可见性设置,如上所述

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

Codebehind方法

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

1 个答案:

答案 0 :(得分:0)

您需要一个代表行的附加模型(实体),它会为每行添加一个可见性标记,然后您就可以单独设置每一行。 如果您需要将数据传入和传出BL和DAL组件,可以使用AutoMapper Nuget Package在不同层的实体之间进行映射。

希望它有所帮助!