0

对不起,如果这是基本的,我是 .Net 的新手并且已经环顾四周,但也许我没有搜索正确的术语。

我有一个在设计视图中加载的 DetailsView。我希望其中一些字段只显示给某些用户。所以我在代码隐藏中思考,我可以隐藏其他字段。我还想在代码隐藏中更改其中一些字段的 HeaderText。

但是,我还需要这个 DetailsView 是可编辑的。如果某些用户隐藏了这些字段,我不确定这会产生什么影响。它会更新所有字段,甚至是隐藏的字段吗?

只有某些用户也应该看到编辑按钮。

有没有人对如何做这样的事情有任何提示?

4

2 回答 2

2

在您的页面类中创建一个布尔字段来表示控件是否应该可见并在 page_load 中设置此值。(注:Authentication.IsAuthorized 只是一个如何判断字段的例子,替换成你自己的代码)

public partial class MyPage : System.Web.UI.Page
{
    protected bool showField = false;
    protected void Page_Load(object sender, EventArgs e)
    {
        showField = Authentication.IsAuthorized(User.Identity.Name);
    }
}

现在绑定到您控件中的此字段。请注意,这需要使用模板字段而不是绑定字段。

<asp:Label ID="lblHiddenField" runat="server" Visible='<%# showField %>' />

如果它们位于模板字段中,这也适用于您的按钮。我过去使用过绑定字段和一些讨厌的 foreach 循环来查找我想要隐藏的控件,但老实说,这是执行此操作的更直接的方法,恕我直言。

于 2013-08-19T20:22:43.437 回答
2

要仅显示某些字段,请使用以下代码:

DetailsView1.Fields[1].Visible = false;

要更改标题文本,请使用:

DetailsView1.Fields[1].HeaderText = "something";

编辑将只允许编辑可见字段。

要使详细视图可编辑,请使用:

DetailsView1.ChangeMode(DetailsViewMode.Edit);
于 2013-08-19T20:36:13.213 回答