使用页面索引事件在窗体视图中隐藏链接按钮控件
本文关键字:视图 隐藏 链接 控件 按钮 窗体 索引 事件 | 更新日期: 2023-09-27 18:35:27
我希望能够隐藏Formview
上的一些项目控件。 我定义了一个方法,以便在满足某个要求时,我设置的Add
、Update
和Delete
链接按钮将不会显示在我的 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。 但是,链接按钮仍然可见。
有谁知道为什么这没有按预期工作?
提前感谢,加里。
我似乎已经解决了这个问题。
最初我尝试使用 FormView1_ModeChanging
,这允许我取消从只读到编辑的模式更改(例如,单击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;
}
}
这可能不是一个理想的解决方案,但允许我根据需要管理我的 LinkButton 的显示。
希望这些信息对其他人有用!加里。