使用页面索引事件在窗体视图中隐藏链接按钮控件

本文关键字:视图 隐藏 链接 控件 按钮 窗体 索引 事件 | 更新日期: 2023-09-27 18:35:27

我希望能够隐藏Formview上的一些项目控件。 我定义了一个方法,以便在满足某个要求时,我设置的AddUpdateDelete链接按钮将不会显示在我的 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 的显示。

希望这些信息对其他人有用!加里。