如何通过页面内部加载后面的代码隐藏gridview内的超链接控件?

时间:2014-04-24 09:48:00

标签: c# asp.net gridview hyperlink

我的网络表单上有一个gridview。我在gridview的模板字段中进行了超链接控制。我希望这个超链接只对网站管理员可见。我是通过 Gridview_RowDataBound 属性完成的。但我没有这样做,而是想在页面加载中隐藏这个超链接。

这是我到目前为止所做的。

aspx页面 -

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id" onrowdatabound="GridView1_RowDataBound1"
BorderStyle="None" EnableModelValidation="True" ShowHeader="False" Width="1000px" GridLines="None">
<Columns>
<asp:TemplateField>
                <ItemTemplate>
<asp:HyperLink ID="HyperLink2" runat="server" Font-Bold="True" Font-Size="Small" 
                        ForeColor="#FF3300" CommandName="EDT" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
                        NavigateUrl='<%# Eval("id","test1.aspx?id={0}") %>'>HyLink</asp:HyperLink>
</ItemTemplate>
            </asp:TemplateField>

</Columns>
</asp:GridView>

cs page -

protected void GridView1_RowDataBound1(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if (Convert.ToString(Session["logname"]) != "Admin")
            {
                HyperLink Hlnk = e.Row.FindControl("HyperLink2") as HyperLink;
                Hlnk.Visible = false;
            }
        }
    }

如何在页面加载中执行此操作?请指导。

2 个答案:

答案 0 :(得分:1)

试试这个:

foreach(GridViewRow row in GridView1.Rows) {
    if(row.RowType == DataControlRowType.DataRow) {
        HyperLink myHyperLink = row.FindControl("HyperLink2") as HyperLink;
        myHyperLink.Visible = false;
    }
}

或:

for (int i = 0; i < GridView1.Rows.Count; i++)
 {
  HyperLink myHyperLink = (HyperLink)gvExcParts.Rows[i].FindControl("HyperLink2");
  myHyperLink.Visible = false;
 }

但确保将数据绑定到gride视图然后查找其中的控件,否则这将无效。

答案 1 :(得分:0)

在DataBind之后尝试使用GridView ...

GridView1.Columns[3].Visible = false;