使用filterexpression后,如何在窗体视图中隐藏编辑按钮?

时间:2013-03-05 14:00:18

标签: asp.net formview

我正在尝试使用用户/管理员方案来编辑​​表单视图。我所拥有的是窗体视图中的编辑按钮默认情况下可见= true。然后我使用一个声明,如果角色不等于admin,则将编辑按钮的可见性设置为false。它的工作方式应该是这样,当我点击,做回发等时,如果用户是和管理员,项目保持隐藏...除非我使用下拉列表进行过滤,使用类似dataSource1.FilterExpression = ("ID=" + ddl1.SelectedValue)的语句。

我是否将formview编辑链接按钮的默认可见性设置为true或false,在使用FilterExpression时,它会更改我不希望它的可见性。这是因为FilterExpression将控件的可见性设置为控件的默认可见性属性设置为。

下面是一些代码作为我的意思的一个例子。请帮忙!

protected void Page_PreRender(object sender, EventArgs e)
    {

    string role;
    role = "client";
    LinkButton editGeneralOverview = (LinkButton)formViewGeneralOverview.FindControl("EditButton");

if (role != "admin"))
{
    editGeneralOverview.Visible = false;
}

if (ddlIDFilter.SelectedValue != "-- ALL --")
{
    dataSourceGeneralOverview.FilterExpression = ("ID=" + ddlIDFilter.SelectedValue);
}

1 个答案:

答案 0 :(得分:0)

您可以在FormView的DataBound事件中隐藏它:

protected void formViewGeneralOverview_DataBound(Object sender, EventArgs e)
{
    LinkButton editGeneralOverview = (LinkButton)formViewGeneralOverview.FindControl("EditButton");

    if (role != "admin"))
    {
        editGeneralOverview.Visible = false;
    }
}

这样,在FilterExpression生效后,您的可见性设置会被重新应用。

注意:如果您不知道,可以通过设置OnDataBound属性将此事件附加到标记中的FormView。像这样:

<asp:FormView ID="formViewGeneralOverview" 
    OnDataBound="formViewGeneralOverview_DataBound" 
    ...whatever other propeties you have >
    ...templates and junk...
</asp:FormView>