【问题标题】:Setting Visiblity of panel inside of formview设置formview内面板的可见性
【发布时间】:2016-08-15 15:21:22
【问题描述】:

我有一个 FormView,其中包含我希望根据用户访问权限提供给不同用户的元素。我已经将这些中的每一个都封装在一个面板中并为面板添加了 ID,以便我可以从可能使用 FindControl 钻入 FormView 的代码中调用它们,但到目前为止还没有成功。

我从来没有在 FindControl 上获得过多少运气,我想知道你们中的一些了解它的人是否可以为我指明正确的方向 这里是我在 aspx 上的代码示例,而背后的 C# 代码不起作用出去!

如果这正常工作,那么我会在此面板的此受保护空白下为有效组放置条件,以允许这些用户访问此面板,并同样对应用了权限的其他面板执行相同操作。

通过这种方式,我将根据我的 ACL 为每个用户组呈现一个自定义 FormView。但我就是想不通如何正确使用 FindControl。

ASPX 示例:

<asp:FormView Width="100%" ID="ChangeFormFV" DefaultMode="Insert" runat="server" DataKeyNames="CAssetID" DataSourceID="UpdateSqlDataSource">
<InsertItemTemplate>
    <asp:Panel runat="server" ID="ShortDescPnl" Visible="false">
    </asp:Panel>
    <asp:Panel runat="server" ID="LongDescPnl" Visible="false">
    </asp:Panel>
    <asp:Panel runat="server" ID="AddNotesPnl" Visible="false">
    </asp:Panel>
    <asp:Panel runat="server" ID="ManufacturerPnl" Visible="false">
    </asp:Panel>
<asp:LinkButton runat="server" Text="Insert" CommandName="Insert" ID="InsertButton" CausesValidation="True" />&nbsp;<asp:LinkButton runat="server" Text="Cancel" CommandName="Cancel" ID="InsertCancelButton" CausesValidation="False" />
</ItemTemplate>

C# 代码隐藏(不工作):

protected void ChangeFormFV_Databound(object sender, EventArgs e)
    {
        if (Session["SessionUType"].ToString() == "ITSec")
        {
            ChangeFormFV.Row.FindControl("ShortDescPnl.visiblity")="true";
        }
    }

感谢可以提供的任何帮助,我一直在搜索参考资料并阅读所有我能阅读的内容,但只是没有从我的结果中得到我需要的东西。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    FindControl 方法返回实际控制。设置控件本身的可见性。像这样的:

    Panel control = ChangeFormFV.Row.FindControl("ShortDescPnl") as Panel;
    if (control != null)
        control.Visible = true;
    

    【讨论】:

    • 这似乎正在读取值。我需要做的是通过后面的代码将值设置为 true 或 false。
    • @KenCarter:“读取价值”是什么意思?这里的最后一行代码分配了一个值。
    • 我的错......完全错过了......好吧,我尝试在页面加载器中使用它,但它不喜欢那样......然后在其他地方......所以我错过了我可能会使用它。也许我错过了一个包含? ChangeFormFV 似乎令人窒息,告诉我“名称‘ChangeFormFV’在当前上下文中不存在。
    • @KenCarter:这段代码在同一页上吗?该类中是否存在asp:FormView 控件的属性?通常设计师会为您创建它。
    • 不,它在页面后面的代码中。你是说你的例子会出现在 aspx 页面上?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    相关资源
    最近更新 更多