使用页面索引事件隐藏Formview中的Linkbutton控件

时间:2012-05-28 08:09:16

标签: c# asp.net

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

有谁知道为什么这不能按预期工作?

提前致谢, 加里。

1 个答案:

答案 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;
        }
    }

这可能不是一个理想的解决方案,但允许我根据需要管理LinkBut​​tons的显示。

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