【问题标题】:Hiding fields in DetailsView from codebehind从代码隐藏中隐藏 DetailsView 中的字段
【发布时间】:2013-08-20 04:36:13
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 详情查看here如何查找和修改控件
  • @afzalulh 谢谢你的链接

标签: c# asp.net


【解决方案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 循环来查找我想要隐藏的控件,但老实说,恕我直言,这是更直接的方法。

【讨论】:

  • 如果你想让它适用于按钮,只要你使用 ,你必须像button1.DataBind(); 一样进行数据绑定
  • @Subterfuge 这就是我要找的。不知道如何表达。非常感谢您的帮助。
  • @afzalulh 如果按钮位于模板字段中,则会在按钮上自动调用数据绑定。 Cineno28 - 没问题!很高兴为您提供帮助!
【解决方案2】:

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

DetailsView1.Fields[1].Visible = false;

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

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

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

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

DetailsView1.ChangeMode(DetailsViewMode.Edit);

【讨论】:

    猜你喜欢
    • 2014-04-10
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 2012-06-25
    相关资源
    最近更新 更多