【问题标题】:asp:TableRow set visible property not workingasp:TableRow 设置可见属性不起作用
【发布时间】:2011-03-16 16:37:16
【问题描述】:

我正在开发一个 .NET 3.5 Web 应用程序,它通过接口实现显示/隐藏 ascx 文件中包含的表行(包含表的控件实现接口)。

因此,鉴于 .ascx 中的此标记:

<asp:Table id="MyTable" runat="server">
<asp:TableRow ID="Foo" runat="server">
        <asp:TableCell ID="FooCell"
            runat="server"  ColumnSpan="3">
            //Cell contents omitted
        </asp:TableCell>
<asp:TableCell .... ellided
    </asp:TableRow>
</asp:Table>

界面:

public interface IMyInterface
{
    Table GetPageDataTable();
}

ascx 后面代码中的实现:

#region IMyInterface Members

    public Table GetPageDataTable()
    {
        return MyTable;
    }

    #endregion

当我从包含页面使用如下方法时,当我循环遍历表行时,包含语句返回 true,但是,该行的 Visible 属性 = false。

private void SetVisibleRows(IMyInterface control)
    {
        // the list stored in session contains 'Foo'
        List<string> choices = (List<string>)Session["selectionsList"]; 

        Table tbl = control.GetPageDataTable();

        foreach (TableRow r in tbl.Rows)
        {
            //r.ID == 'Foo'
            r.Visible = choices.Contains(r.ID, StringComparer.OrdinalIgnoreCase);
        }             
  }

我也直接在控件的代码隐藏中尝试过,甚至设置 Foo.Visible = true;在调试窗口中仍然显示 visible = false。

对此的任何帮助将不胜感激,因为它让我发疯。我有另一个实现接口的控件,它对那个控件工作正常。

谢谢!

【问题讨论】:

  • 您确定您的 ascx 或 Foo 的任何其他父容器控件不是不可见的吗?
  • 它包含在向导控件中。但是,我并没有在它上面隐藏任何东西。实现该接口的类似控件适用于另一个 ActiveStepIndex。

标签: c# asp.net


【解决方案1】:

我想通了,并认为我会分享答案。

对 SetVisibleRows 的调用需要在页面的 OnLoadComplete 事件上发生。尝试在控件加载之前设置行可见性不起作用。

感谢蒂姆,您的回复。

【讨论】:

    猜你喜欢
    • 2018-10-08
    • 2012-05-01
    • 2012-12-17
    • 2016-01-09
    • 2013-05-01
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多