Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 可见='<;%#UserCanEdit%>'–;如果在页面加载内设置为true,则控件为';看不见_C#_.net_Asp.net_Data Binding_Gridview - Fatal编程技术网

C# 可见='<;%#UserCanEdit%>'–;如果在页面加载内设置为true,则控件为';看不见

C# 可见='<;%#UserCanEdit%>'–;如果在页面加载内设置为true,则控件为';看不见,c#,.net,asp.net,data-binding,gridview,C#,.net,Asp.net,Data Binding,Gridview,用户控件定义名为UserCanEdit的属性: 此用户控件还包含以下GridView: 那么,如果UserCanEdit设置在Page_Load()中,为什么C不可见呢?据我所知,单值绑定表达式只有在调用GridView.DataBind()时才计算,这是在UserCanEdit设置为true之后发生的 干杯我猜是因为控件是在您还没有获得UserCanEdit值之前定义的。在页面初始化步骤中,控件不是在页面加载()之前加载吗 我猜是因为控件是在您还没有获得UserCanEdit值之前定义的


用户控件定义名为UserCanEdit的属性:


此用户控件还包含以下GridView:


那么,如果UserCanEdit设置在Page_Load()中,为什么C不可见呢?据我所知,单值绑定表达式只有在调用GridView.DataBind()时才计算,这是在UserCanEdit设置为true之后发生的



干杯

我猜是因为控件是在您还没有获得UserCanEdit值之前定义的。在页面初始化步骤中,控件不是在页面加载()之前加载吗


我猜是因为控件是在您还没有获得UserCanEdit值之前定义的。在页面初始化步骤中,控件不是在页面加载()之前加载吗


我想这里的问题是UserCanEdit不是gridview数据源的一部分。如何基于不属于源代码的属性进行绑定。我猜你想做的是基于某个用户凭证隐藏一列。可能的解决方案是用户OnRowDataBound事件。在这个事件中,用户是这样的

如果(条件)

否则

现在,您可以在实际页面加载(您的网页)事件中设置此密码


注意:条件实际上是公共属性,类似于UserCanEdit,我想这里的问题是UserCanEdit不是gridview数据源的一部分。如何基于不属于源代码的属性进行绑定。我猜你想做的是基于某个用户凭证隐藏一列。可能的解决方案是用户OnRowDataBound事件。在这个事件中,用户是这样的

如果(条件)

否则

现在,您可以在实际页面加载(您的网页)事件中设置此密码


注意:条件实际上是公共属性,类似于您的UserCanEdit

下面是Mark建议的后续文章,我理解页面的生命周期。控件确实是在Page_Load()之前初始化的,但这并不意味着在初始化控件后不能更改控件的属性(因此在Page_Load()内部)。下面是Mark建议的后续文章,我理解Page的生命周期。控件确实是在Page_Load()之前初始化的,但这并不意味着在初始化之后不能更改控件的属性(因此在Page_Load()内部)。您能告诉我GridView1的数据源是什么吗?为了清楚起见,我在帖子中发了一些代码,但它实际上绑定到ObjectDataSource,其中Select方法返回字符串[]您是否尝试过为RowDataBound事件创建处理程序,并在其中放置断点?我也很好奇这个问题的答案。在页面加载启动之后才会进行渲染,所以我认为这应该可以工作。另外,您是否尝试将“”更改为“”?不知道为什么在绑定表达式中需要这个。嗯,现在可以了。我只是打开了电脑,启动了VS,出于某种原因,它现在可以工作了。从昨天开始我就没有做过任何编程,所以现在为什么它能工作还有些模糊。很抱歉耽误您的时间,您能告诉我GridView1的数据源是什么吗?我在帖子中发布了一些代码(为了清楚起见),但它实际上绑定到ObjectDataSource,其中Select方法返回字符串[]您是否尝试过为RowDataBound事件创建处理程序并在那里放置断点?我也很好奇这个问题的答案。在页面加载启动之后才会进行渲染,所以我认为这应该可以工作。另外,您是否尝试将“”更改为“”?不知道为什么在绑定表达式中需要这个。嗯,现在可以了。我只是打开了电脑,启动了VS,出于某种原因,它现在可以工作了。从昨天开始我就没有做过任何编程,所以现在为什么它能工作还有些模糊。抱歉耽误了你的时间
private bool _userCanEdit=false;
public bool UserCanEdit
{
    get { return _userCanEdit; }
    set { _userCanEdit = value; }
}
    <asp:GridView ID="GridView1" runat="server">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Label ID="C" runat="server" Visible='<%# UserCanEdit %>' Text="Visibility"></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
protected void Page_Load(object sender, EventArgs e)
{
    this.UserCanEdit = (this.Page.User.Identity.IsAuthenticated &&
       (this.Page.User.IsInRole("Administrators") ||
        this.Page.User.IsInRole("Editors")));

    GridView1.DataBind();
}
((Label)e.Row.FindControl("C")).visible = true;
((Label)e.Row.FindControl("C")).visible = false;