0

我正在尝试使用用户/管理员方案来编辑​​表单视图。我所拥有的是表单视图中的编辑按钮默认为可见=真。然后我使用一个语句,如果角色不等于管理员,然后将编辑按钮的可见性设置为 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);
}
4

1 回答 1

0

您可以将其隐藏在FormViews DataBound 事件中:

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

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

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

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

<asp:FormView ID="formViewGeneralOverview" 
    OnDataBound="formViewGeneralOverview_DataBound" 
    ...whatever other propeties you have >
    ...templates and junk...
</asp:FormView>
于 2013-03-05T21:05:12.117 回答