可以';t更改CodeBehind中LinkButtons的属性

本文关键字:LinkButtons 属性 CodeBehind 更改 可以 | 更新日期: 2023-09-27 18:25:49

我遇到了一件非常简单的事情,我已经做了无数次了,但这次我做不到。

我的网格视图中有类似的链接按钮

<asp:TemplateField>
    <ItemTemplate>
        <asp:LinkButton ID="GVCon_TFEdit" runat="server" CssClass="eh_label_style" CommandArgument="Edit" CommandName="Edit" Text="Edit"></asp:LinkButton>
    </ItemTemplate>
</asp:TemplateField>

我有六次。所有方式一个编辑和一个删除链接按钮。

然后,我尝试在Codebehind的第5行更改它们的可见位置(如果我注释掉了,那么在第6行等):

1    protected void Page_PreRenderComplete(object sender, EventArgs e)
2            {
3                if (Session["Permissions"].ToString() == "User")
4                {
5                    GVComp_TFDelete.Visible = false;
6                    GVComp_TFEdit.Visible = false;
7                    GVCon_TFDelete.Visible = false;
8                    GVCon_TFEdit.Visible = false;
9                    GVMatr_TFDelete.Visible = false;
10                   GVMatr_TFEdit.Visible = false;

但它总是给我带来一个众所周知的例外:

由于对象的当前状态,操作无效

好吧,我确信这个对象不再是空的了?!(会话["权限"]当然也不是空的,因为它正在准备好他的预加载状态…)

也许我必须告诉你更多,因为我对那些LinkButtons有问题^^所以,在那些TemplateFields中,我有完全相同的LinkButtons,然后我更改了LB的名称,从那时起,我就不能在CodeBehind中使用它们。这是因为他们已经不在设计文件中了。。。所以我尝试了很多我在inet中找到的技巧,还有这里的技巧,但都不起作用(比如重建designerfile,将LinkButtons new写入aspx文件,我还确保文件在正确的文件夹中等等…)。所以我手动将它们添加到designer.cs中。现在我可以在CodeBehind中"使用"它们,但当我开始调试时,它会遇到这个错误。

如果你能帮我就太好了,这太烦人了。。。

可以';t更改CodeBehind中LinkButtons的属性

您也可以通过这种方式找到带有RowCommand事件的

LinkButton name = (LinkButton)gridview.Rows[index].FindControl("lnkbtnActionNames");
name.visible=false;

由于您使用的是Gridview,因此必须为Gridview使用事件RowDataBound

在这种情况下,您必须检查e.Row.RowType == DataControlRowType.DataRow

之后,您可以使用

LinkButton lb = ((LinkButton)e.Row.FindControl("GVCon_TFEdit"));

获取当前行的链接按钮,然后使用lb.Visible = false;或您需要的任何代码。