Я хотел бы скрыть «EditButton», расположенный в шаблоне ItemTime элемента управления FormView.
Вот код OnDataBound FormView, который я пробовал:
protected void fvPhaudDets_OnDataBound(object sender, EventArgs e)
{
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
PrincipalSearchResult<Principal> groups = UserPrincipal.FindByIdentity(ctx, User.Identity.Name).GetAuthorizationGroups();
IEnumerable<string> groupNames = groups.Select(x => x.Name);
string mode = fvPhaudDets.CurrentMode.ToString();
lblCrntMode.Text = mode;
if (fvPhaudDets.CurrentMode == FormViewMode.ReadOnly)
{
Button editbtn = fvPhaudDets.FindControl("EditButton") as Button;
//Determine authorization based on the user's AD security groups
if (groupNames.Contains("SecGroup1"))
{
editbtn.Visible = false;
}
else
{
editbtn.Visible = true;
}
}
}
Вот ошибка, которую я получаю:
System.NullReferenceException: 'Object reference not set to an instance of an object.'
Может быть, проблема в том, что код выполняется до того, как весь FormView будет отображен на странице?
Как я могу изменить код, чтобы убедиться, что «EditButton» в ItemTemplate FormView скрыт, если текущий пользователь является членом SecGroup1?
- EDIT -
Это работает как ожидалось ...
if (fvPhaudDets.CurrentMode == FormViewMode.ReadOnly)
{
LinkButton editbtn = fvPhaudDets.FindControl("EditButton") as LinkButton;
if (editbtn != null && groupNames.Contains("SecGroup1"))
{
editbtn.Visible = true;
}
}