FindControl 似乎只引用网格的名称,而不是网格内的列名。我也找不到任何有关 FindControlInCollection 的文档或示例。
在这一点上,我没有任何复杂的逻辑来包装它。只需要隐藏列。我正在使用 C# 和 VS Update 2。
FindControl 似乎只引用网格的名称,而不是网格内的列名。我也找不到任何有关 FindControlInCollection 的文档或示例。
在这一点上,我没有任何复杂的逻辑来包装它。只需要隐藏列。我正在使用 C# 和 VS Update 2。
布莱恩的回答包含你需要的东西。
FindControl只获取控件的代理。虽然您可以使用它进行一些设置,但访问实际控件的唯一方法是通过代理的ControlAvailable处理程序访问它,该处理程序在其ControlAvailableEventArgs参数中提供对基础控件的引用。
此外,如您所见,您实际上并没有通过网格中使用的控件设置列可见性,而是直接使用DataGrid的Columns集合来设置它。
在屏幕的激活事件下,使用以下代码块:
IControlItemProxy
使用网格的名称。using
指令添加到System.Windows.Controls
..
partial void ScreenName_Activated()
{
IContentItemProxy proxy = this.FindControl("NameOfGrid");
proxy.ControlAvailable += new EventHandler<ControlAvailableEventArgs>((s1, e1) =>
{
DataGrid dataGrid = (DataGrid)e1.Control;
dataGrid.Columns[0].Visibility = System.Windows.Visibility.Collapsed;
dataGrid.Columns[1].Visibility = System.Windows.Visibility.Collapsed;
});
}