【发布时间】: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。