0

我希望能够在Formview. 我已经定义了一个方法,这样当满足某个要求时,我设置的AddUpdate链接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。但是,链接按钮仍然可见。

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

在此先感谢,加里。

4

1 回答 1

0

我似乎已经解决了这个问题。

最初我尝试使用,它允许我取消将模式从只读更改为编辑(例如,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;
        }
    }

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

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

于 2012-05-28T10:38:55.407 回答