Как условно сделать поле DetailsView доступным только для чтения? - PullRequest
0 голосов
/ 26 января 2011

Скажем, у меня есть DetailsView с кучей полей, и я хочу, чтобы только некоторые пользователи редактировали некоторые из них.Их слишком мало, чтобы разделить их на другие DetailsView, поэтому я думаю найти способ разрешить пользователю редактировать их только на основе некоторой логики кода, эффективно делая их доступными только для чтения по желанию.

Мне кажется, важно упомянуть, что оба поля TemplateField с, а не обычные BoundField с со свойствами ReadOnly.

Есть идеи?По какой-то причине требуемые функции не бросаются в глаза после прочтения документации.

О, и мне нужен каждый, чтобы увидеть их конкретные значения, я просто хочу ограничить доступ для редактирования к ним.

1 Ответ

3 голосов
/ 26 января 2011

Хмм, очевидно, это было так же просто, как установить для свойства EditItemTemplate рассматриваемых полей значение null. Кажется, до сих пор работает нормально!

Редактировать: пример короткого кода, показывающий, как я это сделал:

        foreach (DataControlField field in dvDRDetails.Fields)
            if (!fieldstoignore.Contains(field.HeaderText))
                if (field is TemplateField)
                    ((TemplateField)field).EditItemTemplate = null;
                else if (field is BoundField)
                    ((BoundField)field).ReadOnly = true;

Где fieldstoignore - это массив заголовков полей, которые я всегда устанавливал как редактируемые. Остальные делятся на две категории: TemplateField, которые требуют взлома, который я обсуждал выше, и BoundField, у которого есть свойство ReadOnly, которое я могу установить.

...