在没有按钮的情况下从数据网格隐藏列

时间:2018-12-24 13:34:10

标签: c# wpf

我有datagrid,他的itemsource是数据表,我正在尝试折叠一些列,仅在单击按钮时有效。

这不起作用:

当我调用load函数时,它会将数据从数据库加载到myDataTable,但不会折叠datagrid中的列

void Load()
{
    string query = "SELECT * FROM MyTable";
    myDataTable = Query();  // <--- the Query function returns datatable
    My_DataGrid.ItemsSource = myDataTable.DefaultView;
    CollapseDGColumn("SomeCulumnName", My_DataGrid);
}

// Gets datagrid and column name and collapse the column
void CollapseDGColumn(string columnToHide, DataGrid dg)
{
     foreach (var col in dg.Columns) // <-- dg.Columns count=0
         if (col.Header.ToString().Trim() == columnToHide.Trim())
             col.Visibility = Visibility.Collapsed;
}

当我调用CollapseDGColumn函数时,它说dg.Columns的计数为0,即使myDataTable中有数据。

此代码确实有效:

如果我调用此Load函数:

void Load()
{
    string query = "SELECT * FROM MyTable";
    myDataTable = Query();  // <--- the Query function returns datatable
    My_DataGrid.ItemsSource = myDataTable.DefaultView;
}

然后单击按钮:

void Collapse_Btn(object sender, RoutedEventArgs e)
{
    CollapseDGColumn("SomeCulumnName", My_DataGrid);
}

我如何使选项 1 工作,我是说没有按钮?

1 个答案:

答案 0 :(得分:0)

添加已加载的事件,例如:<DataGrid Loaded=“myDg_Loaded” />

在后面的代码中:

void myDg_Loaded(object sender, RoutedEventArgs e)
{ 
     //collapse columns here
}