首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在DataGrid中删除选中的列?(C#/WPF)

如何在DataGrid中删除选中的列?(C#/WPF)
EN

Stack Overflow用户
提问于 2019-06-12 02:03:29
回答 2查看 124关注 0票数 0

如何在DataGrid中删除选中的列(及其行)?

复选框和Excel记录的选择:

代码语言:javascript
复制
CsvGrid.SelectAllCells();
foreach (var checkBox in CheckBoxes.Children.OfType<CheckBox>().Where(x => x.IsChecked == true))
{
    for(int i = 0; i < CsvGrid.SelectedCells.Count; i++)
    {
        if (checkBox.Tag != CsvGrid.Columns[i].Header) // How to remove this Column and its lines?
    }
}
ApplicationCommands.Copy.Execute(null, CsvGrid);
String result = (string) Clipboard.GetData(DataFormats.Text);
CsvGrid.UnselectAllCells();

SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.FileName = "Document";
saveFileDialog.DefaultExt = ".xls";
saveFileDialog.Filter = "Excel|*.xls|Excel 2010|*.xlsx|CSV files (*.csv)|*.CSV";
saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
if (saveFileDialog.ShowDialog() == true)
{
    File.WriteAllText(saveFileDialog.FileName, result.Replace(',', ' '));
    MessageBox.Show("File created!");
}

阅读CSV表。使用LumenWorks写入DataTable

代码语言:javascript
复制
using LumenWorks.Framework.IO.Csv;

DataTable csvTable = new DataTable();
using (CsvReader csvReader = new CsvReader(new StreamReader(FilePath.Text), true))
{
    csvTable.Load(csvReader);

    for (int i = 0; i < csvTable.Columns.Count; i++)
    {
        csvTable.Columns[i].ColumnName = csvTable.Columns[i].ColumnName.Replace("_", " ");
    }

    CsvGrid.ItemsSource = csvTable.DefaultView;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-12 22:45:43

代码语言:javascript
复制
CsvGrid.Items.Refresh();
CsvGrid.UpdateLayout();

for (int i = 0; i < CsvGrid.Columns.Count; i++)
{
    foreach (var checkBox in CheckBoxes.Children.OfType<CheckBox>().Where(x => x.IsChecked == true))
    {
        if (CsvGrid.Columns[i].Header.ToString() == checkBox.Tag.ToString()) CsvGrid.Columns.RemoveAt(i);
     }
}

CsvGrid.SelectAllCells();
CsvGrid.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
ApplicationCommands.Copy.Execute(null, CsvGrid);
String result = (string) Clipboard.GetData(DataFormats.Text);
CsvGrid.UnselectAllCells();

SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.FileName = "Document";
saveFileDialog.DefaultExt = ".xls";
saveFileDialog.Filter = "Excel|*.xls|Excel 2010|*.xlsx|CSV files (*.csv)|*.CSV";
saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
if (saveFileDialog.ShowDialog() == true)
{
    File.WriteAllText(saveFileDialog.FileName, result.Replace(',', ' '));
    MessageBox.Show("File created!");
}
票数 0
EN

Stack Overflow用户

发布于 2019-06-12 02:12:18

您可以将可见性设置为折叠:

代码语言:javascript
复制
CsvGrid.Columns[i].Visibility = Visibility.Collapsed;

更改绑定源:

WPF:

代码语言:javascript
复制
<Grid>
    <DataGrid x:Name="TheGrid" ItemsSource="{Binding dataTable}">
        <DataGrid.Columns>
            <DataGridTemplateColumn Header="Delete">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox Tag="2" Checked="Remove_me"></CheckBox>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>
</Grid>

代码隐藏:

代码语言:javascript
复制
   DataTable dt1 = new DataTable();

   public MainWindow()
    {
        InitializeComponent();
        dt1 = new DataTable();

        dt1.Columns.Add("1");

        dt1.Columns.Add("2");

        dt1.Columns.Add("3");

        DataRow dr = dt1.NewRow();

        TheGrid.ItemsSource = dt1.DefaultView;
    }
    private void Remove_me(object sender, RoutedEventArgs e)
    {

        CheckBox checkbox = (CheckBox)sender;
        dt1.Columns.Remove(checkbox.Tag.ToString())

        TheGrid.ItemsSource = null;
        TheGrid.ItemsSource = dt1.DefaultView;

    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56549416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档