C# 使用DefaultView时DataGrid中有0列

C# 使用DefaultView时DataGrid中有0列,c#,wpf,datagrid,C#,Wpf,Datagrid,您好,我试图从DefaultView隐藏DataGrid中的列,但它给了我0列 代码: 正如@trapspring所指出的,它听起来像是pdta返回空的。在这种情况下,类似这样的东西可能会派上用场 int[] colsToHide = { 0, 4, 5, 6, 7, 8, 10, 11, 12, 13 }; int pointer = 0; //Hide for as long as the desired column index exists //Which means the orde

您好,我试图从DefaultView隐藏DataGrid中的列,但它给了我0列

代码:


正如@trapspring所指出的,它听起来像是
pdta
返回空的。在这种情况下,类似这样的东西可能会派上用场

int[] colsToHide = { 0, 4, 5, 6, 7, 8, 10, 11, 12, 13 };
int pointer = 0;

//Hide for as long as the desired column index exists
//Which means the order you put the indices in colsToHide
//DOES affect the results of the while loop.
while (colsToHide[pointer] < InvoiceProductsDataGrid.Columns.Count)
{
    InvoiceProductsDataGrid.Columns[colsToHide[pointer]].Visibility = Visibility.Hidden;
}
int[]colsToHide={0,4,5,6,7,8,10,11,12,13};
int指针=0;
//只要所需的列索引存在,就隐藏
//这意味着你将索引放入colsToHide的顺序
//不会影响while循环的结果。
while(colsToHide[pointer]
所以答案是,我试图隐藏一些我必须删除的东西,代码是这样的

productsTableAdapter pta = new productsTableAdapter();
pta.Fill(dataset.products);
productsDataTable pdta = pta.GetDataByInvoiceID(invoiceID);

pdta.Columns.Remove("client_id");
pdta.Columns.Remove("id1");
pdta.Columns.Remove("units");
pdta.Columns.Remove("provider");
pdta.Columns.Remove("sub_categorie");
pdta.Columns.Remove("id_invoice");
pdta.Columns.Remove("id_product");
pdta.Columns.Remove("invoice_date");
pdta.Columns.Remove("collection_method");
InvoiceProductsDataGrid.ItemsSource = pdta.DefaultView;

您确定pdta正在返回一行或多行吗?是的,它给了我数据我需要隐藏关系,但我不能默认视图在“InvoiceProductsDataGrid.ItemsSource”处返回0列问题是我正在返回数据视图,我不知道如何从数据视图和数据行视图隐藏列
productsTableAdapter pta = new productsTableAdapter();
pta.Fill(dataset.products);
productsDataTable pdta = pta.GetDataByInvoiceID(invoiceID);

pdta.Columns.Remove("client_id");
pdta.Columns.Remove("id1");
pdta.Columns.Remove("units");
pdta.Columns.Remove("provider");
pdta.Columns.Remove("sub_categorie");
pdta.Columns.Remove("id_invoice");
pdta.Columns.Remove("id_product");
pdta.Columns.Remove("invoice_date");
pdta.Columns.Remove("collection_method");
InvoiceProductsDataGrid.ItemsSource = pdta.DefaultView;