如何在数据表中删除或隐藏特定列?

9

我正在使用C#。 我想隐藏或从DataTable或DataSet中删除列。 我附上了部分代码:

DataTable dt = new DataTable();
DataView dv = new DataView();
dv = (DataView)Session["map_hi"];
dt = dv.ToTable();
dt.Columns[0].ColumnMapping = MappingType.Hidden;
dt.AcceptChanges();

我想从DataTable中隐藏或删除列 dt.Columns.Remove("ColumnName") - Hamlet Hakobyan
4个回答

20
尝试这个。
   DataTable t;
   t.Columns.Remove("columnName");
   t.Columns.RemoveAt(columnIndex);

如果您将该列设置为id(主键),则无法删除它(我曾经遇到过这种情况)。否则,这将起作用。 - Fran Martinez
嗨@Codinghierarchy,我也遇到了以下错误:“无法删除此列,因为它是关系DA_StudentList的父键的一部分。”我该如何修复它,我不想显示那个特定的列。 - Mahendra

1

正如Pranay所说,您可以使用myTable.Columns.Remove("columnName");删除列。

但在我的情况下,它会抛出异常,因为“无法删除此列,因为它是父关系的一部分”。

我能够通过以下方式克服这个问题。

  myTable.ParentRelations.Clear();
  myTable.ChildRelations.Clear();
  myTable.Constraints.Clear();
  myTable.Columns.Remove("columnName"); 

希望这能帮助到某个人。

-3

使用Visible属性来隐藏特定的列:

dt.Columns[0].Visible= false;

9
据我所知,这仅适用于 DataGridView 而不适用于 DataTable_。因此,在您的示例中,_dt 作为变量名可能有点误导性。 - Christian Junk
@ChristianJunk 这是去年的事了。此外,这对我起作用。如果我不确定,我会在我的答案中提到它。 - KaeL
@PrasaanthNeelakandan:那我就不会发布这个了。你可能有一些代码正在更改它的值。 - KaeL
1
@KaeL 你不应该这样做。这个方法不起作用,因为Visible是DataGridViewColumn的属性,而不是DataColumn的属性。OP正在询问DataTable相关的问题。 - xiaomy
@xiaomy 这就是为什么 OP 没有将其标记为答案的原因。无论如何,感谢您指出这一点。 - KaeL

-4

如果想要隐藏和显示,请尝试以下方法:

隐藏:

dt.Columns[ColumnIndex].Visible = false; 

或者:

dt.Columns["ColumnName"].Visible = false;

用于展示:

dt.Columns[ColumnIndex].Visible = true;  

或者:

dt.Columns["ColumnName"].Visible = true;

用于移除:

dt.Columns.RemoveAt(ColumnIndex);

或者:

dt.Columns.Remove("ColumnName");

2
dt.Column.Visible 不包含 Visible 的定义。 - Mahmoud Ayman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接