レンダリングされたビュー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);
}
これは問題なく機能します。これが私の実際の質問です。
- 実装が標準的な方法であるかどうか?
- この要件を達成するための他の最も簡単な方法はありますか?