我正在尝试使用用户/管理员方案来编辑表单视图。我所拥有的是窗体视图中的编辑按钮默认情况下可见= 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);
}
答案 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>