从后面的代码隐藏DetailsView中的字段

时间:2013-08-19 20:12:58

标签: c# asp.net

对不起,如果这是基本的,我是.Net的新手并且环顾四周,但也许我没有找到合适的条款。

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

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

只有特定用户也应该看到编辑按钮。

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

2 个答案:

答案 0 :(得分: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循环来找到我想要隐藏的控件,但老实说,这是更直接的方式来做这个恕我直言。

答案 1 :(得分:2)

要仅显示部分字段,请使用以下代码:

DetailsView1.Fields[1].Visible = false;

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

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

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

要使detailview可编辑使用:

DetailsView1.ChangeMode(DetailsViewMode.Edit);