Как скрыть кнопку «Изменить» в элементе управления asp.net FormView? - PullRequest
0 голосов
/ 07 ноября 2018

Я хотел бы скрыть «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;
        }
    }

1 Ответ

0 голосов
/ 07 ноября 2018

Попробуйте это:

protected void fvPhaudDets_DataBound(object sender, EventArgs e)
        {
          ((LinkButton) ((FormView)sender).FindControl("EditButton")).Visible = false;// Hides Edit button
          ((LinkButton) ((FormView)sender).FindControl("NewButton")).Visible = false;// Hides New button
          ((LinkButton) ((FormView)sender).FindControl("DeleteButton")).Visible = false;// Hides Delete button
        }

Другое решение: отредактируйте шаблон, затем измените свойство кнопки ссылки на Visible= false или удалите саму кнопку из шаблона.

...