2013-08-19 104 views
-1

对不起,如果这是基本的,我是.Net新手,并且环顾四周,但也许我没有搜索正确的术语。从代码隐藏的DetailsView中隐藏字段

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

但是,我也需要这个DetailsView是可编辑的。如果这些字段对于某些用户是隐藏的,我不确定这会如何影响任何内容。它会更新所有字段,甚至隐藏的字段吗?

只有特定用户才能看到编辑按钮。

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

+0

参见[这里](http://stackoverflow.com/q/2192327/690329)如何查找和修改DetailsView的 – afzalulh

+0

@afzalulh谢谢控制链接 – Cineno28

回答

1

在您的页面类中创建一个布尔型字段来表示控件是否应该可见,并在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循环来找到我想隐藏的控件,但老实说,这是做这个恕我直言的更直接的方式。

+0

如果你想让它适用于按钮,只要你使用的是<%# %> – afzalulh

+0

@Subterfuge这就是我一直在寻找的东西,所以你必须像'button1.DataBind();'一样的数据绑定。不知道如何表达它。非常感谢您的帮助。 – Cineno28

+1

@afzalulh如果数据绑定位于模板字段中,它将自动在按钮上调用。 Cineno28 - 没问题!乐意效劳! –

1

,只显示某些字段使用下面的代码:

DetailsView1.Fields[1].Visible = false; 

要更改标题文本使用:

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

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

要进行的编辑的DetailView使用:

DetailsView1.ChangeMode(DetailsViewMode.Edit);