【问题标题】:How to hide a hyperlink control inside gridview through code behind inside page load?如何通过页面加载后面的代码隐藏gridview中的超链接控件?
【发布时间】:2014-04-24 09:48:00
【问题描述】:

我的网络表单上有一个网格视图。我在 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页面-

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;
            }
        }
    }

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

【问题讨论】:

  • 为什么要在 Page_Load 上?
  • @Adil:实际上我在网格视图中放置了一个复选框。我已经根据特定条件在复选框的选中属性中编写了一些代码。因此,当我使用 Gridview_RowDataBound() 属性时,选中的属性不起作用。所以我删除了它。然后之前我通过 RowDataBound 属性隐藏了这个超链接控件。那就是我想要一个通过页面加载以某种方式做到这一点的解决方案。

标签: c# asp.net gridview hyperlink


【解决方案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;
 }

但请确保将数据绑定到网格视图,然后在其中找到控件,否则这将不起作用。

【讨论】:

  • 您好,Ehsan,它不工作。我甚至可以从管理员以外的其他用户看到这个超链接按钮。
  • 我想在页面加载中执行此操作。
  • 实际上,我并没有使用 Rowdatabound 属性,而是直接在页面加载中编写此代码。后来我在调用 Gridview.DataBind() 之后放置了这段代码。然后问题就解决了。
  • 是的,在数据​​绑定之前它将无法找到,因为数据未绑定
  • 没错。所以这就是我做错了。不过最后改正了。再次感谢你 :-) 干杯 :-)
【解决方案2】:

DataBind 到 GridView 之后试试这个...

GridView1.Columns[3].Visible = false;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多