可以';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中"使用"它们,但当我开始调试时,它会遇到这个错误。
如果你能帮我就太好了,这太烦人了。。。
您也可以通过这种方式找到带有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;
或您需要的任何代码。