我已经做了一百万次我已经做了百万次的简单的事情,但这次,我不能。
我的 Gridview 中有 LinkButtons
<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>
而那些我有六次。总是一个编辑和一个删除链接按钮。
然后我尝试在第 5 行的 Codebehind 中更改它们的可见性(如果我将其注释掉,则在第 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;
但它总是给我带来一个众所周知的例外:
由于对象的当前状态,操作无效
好吧-我确定该对象不再为空了?!(而且 Session["Permissions"] 也肯定不是空的,因为它已经在 PreLoad 中获得了他的状态......)
也许我必须告诉你更多,因为我遇到了 EXACTLY 那些 LinkButtons 的问题 ^^ 所以 - 在那些 TemplateFields 我有完全相同的 LinkButtons,然后我更改了那些 LB 的名称,从那时起我不能在 CodeBehind 中使用它们. 这是因为它们不再在设计器文件中......所以我尝试了很多我在 inet 中找到的提示,还有来自这里的提示 - 但它们没有工作(比如重建设计器文件,也将新的 LinkButtons 写入 aspx 文件我确保该文件位于正确的文件夹中等...)没有任何效果。所以我手动将它们添加到designer.cs中。现在我可以在 CodeBehind 中“使用”它们,但是当我开始调试时 - 它遇到了这个错误。
如果你能帮助我,那就太好了,这太烦人了......