如何在我的DataGrid(C#WPF应用程序)中获取所选单元格的当前列



我想用RowFilter过滤我的DataGrid。用户应该能够通过选择单元格来选择他的列。然后他把一些文本放在一个文本框中,他可以过滤数据网格。我试过一些东西,但都不管用。也许我可以在这里得到一些帮助:(我会很高兴收到每一个回复。这是我的代码和我尝试过的东西:

private void Filter_Click(object sender, RoutedEventArgs e)
{
DataView DV1 = DT1.DefaultView;        // DT1 is my DataTable-Object
// DV1.RowFilter = "Column1 = '" + Filter.Text + "'";   This works fine
DV1.RowFilter = "'" + DataGrid1.CurrentCell.Column+ "' = '" + Filtern.Text + "'"; // When i try this it doesnt work
DataGrid1.ItemsSource = DV1;
}

我尝试了一些其他命令:DataGrid1.CurrentCell.Column.DisplayIndex或DataGrid1.Current Cell.Columin.Header或DataGrid1.CurrentColumn,但我总是收到错误。命令给我一个0。也许有人有主意?

从DataGridView:获取当前列名

int columnIndex = DataGrid1.CurrentCell.ColumnIndex;
string columnName = DataGrid1.Columns[columnIndex].Name;

接下来,您的RowFilter不正确,列名不应该用引号'括起来。

DV1.RowFilter = <<ColumnName>> + " = '" + Filtern.Text + "'";

最后,您的代码应该如下:

private void Filter_Click(object sender, RoutedEventArgs e)
{
DataView DV1 = DT1.DefaultView;

// Get column name
int columnIndex = DataGrid1.CurrentCell.ColumnIndex;
string columnName = DataGrid1.Columns[columnIndex].Name;
DV1.RowFilter = String.Format("{0} = '{1}'", columnName, Filtern.Text); 
DataGrid1.ItemsSource = DV1;
}

注意:这种过滤方式只适用于具有字符串值的列。

试试这个:

DataGrid1.SelectedCells[0]。ColumnIndex

0是选择的第一个元素

谢谢大家!我明白了:(

这是我的代码,希望它能帮助其他人:

int columnIndex = DataGrid1.SelectedCells[0].Column.DisplayIndex; 
string columnname = Convert.ToString(DataGrid1.Columns[columnIndex].Header);
string fullcommand = string.Format("{0} = '{1}'", columnname, Filtern.Text);
DataView DV1 = DT1.DefaultView; 
DV1.RowFilter = fullcommand;
DataGrid1.ItemsSource = DV1;

最新更新