我希望能够隐藏Formview
上的某些项控件。我已经定义了一个方法,以便在满足某个要求时,我设置的Add
,Update
和Delete
链接按钮不会显示在我的Formview中。我用来实现此目的的代码与下面显示的代码相同。这在初始显示时可正常工作。
但是,当使用分页控件时,当Formview中显示另一个项目时,链接按钮会再次显示。
我尝试使用FormView1_PageIndexChanging
和_PageIndexChanged
事件重新隐藏链接按钮,方法如下:
protected void FormView1_PageIndexChanged(object sender, EventArgs e)
{
// Check to see if PDP requirement has been removed
if (txtStatusMessages.Text == "PDP Required has been set to False for this User so PDP cannot be updated or signed off.")
{
Control lb_n = FormView1.FindControl("LinkButton_New");
lb_n.Visible = false;
Control lb_e = FormView1.FindControl("LinkButton_Edit");
lb_e.Visible = false;
Control lb_d = FormView1.FindControl("LinkButton_Delete");
lb_d.Visible = false;
}
}
我意识到检查文本框内容以隐藏控件的想法远非理想;但此时我只想确保我可以使用此方法隐藏项目控件。
使用调试器运行此代码时,会因使用寻呼机按钮而触发事件。可见属性正确地从true更改为false。但是,链接按钮仍然可见。
有谁知道为什么这不能按预期工作?
提前致谢, 加里。
答案 0 :(得分:0)
我似乎已经解决了这个问题。
最初我尝试使用FormView1_ModeChanging
,这允许我取消将模式从ReadOnly更改为Edit(例如,单击Edit
链接按钮时)。这有效,但意味着链接按钮仍然可见。
当我更多地研究这个问题时,我发现虽然我可以将Linkbutton可见属性设置为false,但它们实际上是被重置的。这让我觉得我的问题是由于事件排序(可能是错误的术语)以及刷新Formview
覆盖了我的更改。
因此,我添加了一个新的HiddenField
来存储编辑允许类型数据,这些数据将根据用户是否应该能够更新数据项来设置。然后我将它与PreRender事件一起使用,如下所示:
protected void FormView1_PreRender(object sender, EventArgs e)
{
if (hfEditAllowed.Value == "false")
{
Control lb_n = FormView1.FindControl("LinkButton_New");
lb_n.Visible = false;
Control lb_e = FormView1.FindControl("LinkButton_Edit");
lb_e.Visible = false;
Control lb_d = FormView1.FindControl("LinkButton_Delete");
lb_d.Visible = false;
}
}
这可能不是一个理想的解决方案,但允许我根据需要管理LinkButtons的显示。
希望这些信息对其他人有用! 加里。