3

FindControl 似乎只引用网格的名称,而不是网格内的列名。我也找不到任何有关 FindControlInCollection 的文档或示例。

在这一点上,我没有任何复杂的逻辑来包装它。只需要隐藏列。我正在使用 C# 和 VS Update 2。

4

2 回答 2

2

布莱恩的回答包含你需要的东西。

FindControl只获取控件的代理。虽然您可以使用它进行一些设置,但访问实际控件的唯一方法是通过代理的ControlAvailable处理程序访问它,该处理程序在其ControlAvailableEventArgs参数中提供对基础控件的引用。

此外,如您所见,您实际上并没有通过网格中使用的控件设置列可见性,而是直接使用DataGridColumns集合来设置它。

于 2013-05-22T04:10:33.377 回答
2

在屏幕的激活事件下,使用以下代码块:

  1. 获取一个IControlItemProxy使用网格的名称。
  2. 获取控件本身。
  3. 通过索引访问列并动态设置其可见性。
  4. 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;
        });
}
于 2013-05-21T08:11:40.417 回答