我正在传递一个视图,System.DataTable
并从中传递一个视图html table
。列的可见性随每个login
.
(即)考虑有 5 列,如colA
、colB
、colC
、colD
,colE
并且这些列的可见性随每次登录而变化。有些登录只有colA
,有些登录colA
,colD
有些拥有。
这是适用于上述要求的实现
sql procedure
将返回所有这些列bit
,每个列都有一个字段列,以在这样的视图中显示/隐藏该列。
colA
, isColA
, colB
,isColB
等等
过滤实际上是这里的星星controller
DataTable dt = "Method here that will generate datatable";
var cols = new string[] { "colA", "isColA", "colB", "isColB", "colC", "isColC" and so on };
var colsRemove = new List<string> { };
for(int i=0; i < cols.Length; i +=2)
{
colsRemove.Add(dt.Columns[cols[i + 1]].ToString());
if(!dt.Rows[0][cols[i + 1]].Equals(true))
{
colsRemove.Add(dt.Columns[cols[i]].ToString());
colsRemove.Add(dt.Columns[cols[i + 1]].ToString());
}
}
var newDt = new DataTable();
newDt = dt.Clone();
foreach(var item in colsRemove)
{
newDt.Columns.Remove(item);
}
foreach (DataRow row in dt.Rows)
{
newDt.ImportRow(row);
}
这很好用,这是我的实际问题,
- 执行是否是标准做法?
- 有没有其他最简单的方法来实现这个要求?