我在一件简单的事情上遇到了麻烦,我已经做了一百万次了,但是这一次,我不能。
我的 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 行代码隐藏中更改它们的可见性(如果我将其注释掉,则在第 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;
但它总是给我带来众所周知的异常(exception):
Operation is not valid due to the current state of the object
嗯 - 我确信该对象不再为空?! (Session["Permissions"] 也肯定不为 null,因为它正在 PreLoad 中获取他的状态……)
也许我必须告诉你更多,因为我之前遇到过那些 LinkButton 的问题 ^^ 所以 - 在这些 TemplateFields 中,我有完全相同的 LinkButtons,然后我更改了这些 LB 的名称,从那时起我就无法在 CodeBehind 中使用它们。 这是因为它们不再存在于设计师文件中...... 所以我尝试了很多在inet中找到的提示,还有这里的提示 - 但它们没有起作用(比如重 build 计文件,将新的LinkButtons写入aspx文件,我还确保该文件位于正确的文件夹中等...)没有任何作用。 所以我手动将它们添加到 Designer.cs 中。现在我可以在代码隐藏中“使用”它们,但是当我开始调试时 - 它会遇到此错误。
如果你能帮助我,那就太好了,这太烦人了......
最佳答案
您还可以通过这种方式找到 RowCommand
事件
LinkButton name = (LinkButton)gridview.Rows[index].FindControl("lnkbtnActionNames");
name.visible=false;
关于c# - 无法更改 CodeBehind 中 LinkButton 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17986890/