如何有条件地将DetailsView字段设为只读?

时间:2011-01-26 15:26:30

标签: asp.net detailsview

假设我有一堆DetailsView字段,我只希望某些类型的用户编辑其中一些字段。它们太少而不能将它们分成另一个DetailsView,所以我想要的是找到一些方法只允许用户根据一些代码隐藏逻辑对它们进行编辑,从而有效地将它们设置为只读将

我觉得重要的是要提到这些字段都是TemplateField s,而不是具有BoundField属性的普通ReadOnly

有什么想法吗?由于某种原因,所需的功能不会让我跳过阅读文档。

哦,我需要eveyone来查看他们的具体值,我只想限制对他们的编辑访问。

1 个答案:

答案 0 :(得分:3)

Hrm显然就像将问题字段的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需要我上面讨论过的黑客,而BoundFieldReadOnly属性我可以设置。