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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (113)

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

选择复选框和Excel记录:

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

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;
}
提问于
用户回答回答于

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

CsvGrid.Columns[i].Visibility = Visibility.Collapsed;

更改绑定源:

WPF:

<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>

代码背后:

   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;

    }

热门问答

springboot项目启动报错找不到ConfigurationPropertiesBean?

添加依赖:https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-context/2.2.0.RELEASE <!-- https://mvnrepository.com/artifac...... 展开详请

腾讯加固助手不能下载了吗?下载地址在哪里?MAC可以下载吗?我看只能在网页上加固,自己签名。?

腾讯云@移动安全

腾讯 · 移动开发工程师 (已认证)

腾讯云移动安全前端开发
推荐

乐固客户端已下线,可以使用移动应用在线加固https://console.cloud.tencent.com/ms/reinforce/list

可以自行签名打渠道包。

使用jenkins配合命令进行加固,在加固过程中提示40171,起码50%的概率出现?

whileideath

腾讯 · 运营开发工程师 (已认证)

web互助开发群:953701926,禁止广告,招聘行为。
推荐
内部返回数据解析失败(查毒) 指的是在apk进行加固之前会进行病毒检测,如果检测出现病毒,违法等应用将拒绝加固。 目前是该引擎存在故障。 ... 展开详请

腾讯云物联网设备端 C-SDK中coap sample运行失败getaddrinfo error?

DylanRichard

腾讯 · 产品经理 (已认证)

万物互联的时代,欢迎来到IoT的世界
推荐已采纳

用coap必须打开TLS,现在云端只支持DTLS的coap连接

节点数量如何计算?

吴楠NancyWU

腾讯云 · 高级产品经理 (已认证)

腾讯云区块链产品经理,与区块链一同成长,欢迎交流
推荐

建议网络测试可使用一个组1个节点配置,根据组织多少来定测试规模;企业应用以1个组织2个节点为基础起步,保持组织内的高可用,节点数量扩展根据组织数量和交易使用量增加,一个区块链网络内建议最多不超过100个节点。谢谢您的提问

关于云直播的几个问题,望大佬解惑?

学生路人
推荐

1 海外单独计费

2 地址都是自己算的 可以变也可以不变

3 这个接口是拉流转推的 ,和播放不是一个东西哈 。

所属标签

扫码关注云+社区

领取腾讯云代金券