在控件中的gridview中有选择地隐藏HyperLinkField

时间:2014-03-11 16:37:40

标签: asp.net vb.net controls

我有一个控件可以调用填充aspx页面的顶部,其中包含以下人口统计信息。

<div runat="server" id="headerline" style="width:100%; background-color:#FFFFCC; border-color: #FFFFCC; " >
    <asp:GridView ID="GridView1" skinID="headerline" runat="server" DataSourceID="odsPatientByID" AutoGenerateColumns="False" Width="100%" >
        <HeaderStyle CssClass="invisible"  />
        <RowStyle Width="100px" />
        <Columns>
            <asp:HyperLinkField  DataNavigateUrlFields="PATIENT_ID" DataNavigateUrlFormatString="~/demographics/search_demographics.aspx?PatientID={0}" Text="DEMOGRAPHICS   " ItemStyle-HorizontalAlign="Left" >
        </asp:HyperLinkField>
                <ItemTemplate >
                    <asp:Label SkinID="headerline" ID="lblNAME" runat="server" Text=' Name: ' />
                    <asp:Label SkinID="headerline" ID="lblPTNAME" runat="server" Text='<%# Shis.SCR.UI.Common.CapitalisePatientName(Eval("PT_NAME")) %>' />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField >
                <ItemTemplate >
                    <asp:Label SkinID="headerline" ID="lblDoB" runat="server" Text=' DoB: ' />
                    <asp:Label SkinID="headerline" ID="lblDateofBirth" runat="server" Text='<%# Bind("N1_10_DATE_BIRTH") %>' />
                    <asp:Label skinID="headerlineage" ID="lblAge" runat="server" Text='<%# GetDisplayAge("" & Eval("N1_10_DATE_BIRTH"),"" & Eval("L_DEATH_STATUS")) %>' />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField >
                <ItemTemplate >
                    <asp:Label SkinID="headerline" ID="lblSex" runat="server" Text=' Gender: ' />
                    <asp:Label SkinID="headerline" ID="lblGender" runat="server" Text='<%# EVAL("GENDER") %>' />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
</div>

我显示这样的人口统计数据并且工作正常

<div>
    <controls:Demoline id="demoLine1" runat="server" />
</div>

我想要做的是在页面上选择打印选项时隐藏HyperLink字段,然后我将进入打印页面。这是可能的,如果是这样的话?

1 个答案:

答案 0 :(得分:0)

查看网格的RowDataBound事件,每次将行绑定到网格时都会触发。你检查打印参数,从查询字符串或任何地方,并隐藏超链接。在电话上,所以没有代码可以提供

看看 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound(v=vs.110).aspx

为您的超链接提供ID,例如“MyHyperLink”

添加以下代码:

protected void GridView1_OnRowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (Request.QueryString["print"] != "1")
            return;

        var link = e.Row.FindControl("MyHyperLink") as HyperLink;
        if (link != null)
            link.Visible = false;
    }

然后我添加到你的asp:GridView元素:

OnRowDataBound="GridView1_OnRowDataBound"