レンダリングされたビューSystem.DataTableとそこからビューを渡します。html table列の可視性は、それぞれによって異なりますlogin。
(つまり、、、、、として5つの列があり、これらcolAの列の可視性はログインごとに異なると考えてください。一部のログインにはのみがあり、一部にはあり、一部にはすべてがあります。colBcolCcolDcolEcolAcolAcolD
上記の要件に対して正常に機能する実装は次のとおりです
sql procedurebitこのようなビューでその列を表示/非表示にするために、各列のフィールド列とともにこれらすべての列を返します。
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);
}
これは問題なく機能します。これが私の実際の質問です。
- 実装が標準的な方法であるかどうか?
- この要件を達成するための他の最も簡単な方法はありますか?