目前我在我的代码隐藏中有一个方法,它根据数据值处理在网格视图的某一列中显示或隐藏图像的功能。在这些相同的条件下,我想隐藏或显示我的操作面板中可以在每一行上显示的链接按钮。现在我只是设置我想在同一上述方法中显示/隐藏的链接按钮的可见性。
但当然会发生什么,它会为操作面板的所有行实例设置该链接按钮的可见性。例如,如果在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;
}
}
答案 0 :(得分:0)
您需要一个代表行的附加模型(实体),它会为每行添加一个可见性标记,然后您就可以单独设置每一行。 如果您需要将数据传入和传出BL和DAL组件,可以使用AutoMapper Nuget Package在不同层的实体之间进行映射。
希望它有所帮助!