如何删除最后一列数据表c#

时间:2017-07-14 08:59:03

标签: c# xaml datatable

修改

我尝试将AutoGeneratColumns属性设置为false,如下所示: How to remove extra column Datagrid

但是,如果我这样做,我的所有专栏都会消失。

问题

我有一个包含程序生成的列和行的数据表。但是,我在生成的列的右侧有一个额外的列。我该怎么写才能让它消失?

xaml:

<DataGrid CanUserAddRows="False">
            <DataGrid.ItemsSource>
                <MultiBinding Converter="{StaticResource MatrixToDataViewConverter}">
                    <Binding Path="ColumnHeaders" ElementName="Results"/>
                    <Binding Path="RowHeaders" ElementName="Results"/>
                    <Binding Path="Values" ElementName="Results"/>
                </MultiBinding>
        </DataGrid.ItemsSource>
      </DataGrid>

转换方法

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
            {
                var myDataTable = new DataTable();

                string[] columns = values[0] as string[];
                string[] rows = values[1] as string[];
                double[,] matrix = values[2] as double[,];

                myDataTable.Columns.Add("---"); //Upper left corner

                foreach (string value in columns)
                {
                    myDataTable.Columns.Add(value);
                }


                foreach (string value in rows)
                {
                    myDataTable.Rows.Add(value);
                }

                for (int i = 0; i < matrix.GetLength(0); i++)
                {
                    int row = System.Convert.ToInt32(matrix[i, 1]) - 1;
                    int column = System.Convert.ToInt32(matrix[i, 0]);
                    myDataTable.Rows[row][column] += matrix[i, 2].ToString() + " to " + matrix[i, 3].ToString() + Environment.NewLine;
                }

                return myDataTable.DefaultView;
            }

5 个答案:

答案 0 :(得分:0)

我不知道是什么原因引起了你的额外专栏,所以我给你一个标题问题的答案:

myDataTable.Columns.RemoveAt(myDataTable.Columns.Count - 1);

答案 1 :(得分:0)

您可以删除:

DataTable copyDataTable;
copyDataTable = table.Copy();
copyDataTable.Columns.Remove("ColB");

或使用DataView

过滤
System.Data.DataView view = new System.Data.DataView(yourOriginalTable);
System.Data.DataTable selected = 
        view.ToTable("Selected", false, "col1", "col2", "col6", "col7", "col3");

答案 2 :(得分:0)

可能您的输入数据不正确。 调试这部分。

foreach (string value in columns)
{
    myDataTable.Columns.Add(value);
}

如果你经历了4次......那就错了。

答案 3 :(得分:0)

试试这个

    myDataTable.Columns.RemoveAt(myDataTable.Columns.Count - 1);

答案 4 :(得分:0)

我认为object[] values数组有四个值, foreach 循环在DataTable中添加了四列。

在循环之前,您在DataTable中添加了一列myDataTable.Columns.Add("---");

因此,现在DataTable中有五列。