したがって、ユーザーごとにカスタマイズ可能なメタ データ項目のリストを含むモデルがあります。
public class MyModel {
public int ID { get; set; }
public String Name { get; set; }
public DateTime Created { get; set; }
// Need to diplay each as a column
public List<MetaData> Data { get; set; }
}
public class MetaData {
public int ID { get; set; }
public String Name { get; set; }
public String Label { get; set; }
public String Value { get; set; }
}
MyModel の各メタデータ項目に対して、列名としての名前、ヘッダーとしてのラベル、および各 MyModel に対して出力される値を持つ列を WebGrid に追加する必要があります。
@{
WebGrid grid = new WebGrid(source: Model, rowsPerPage: 5, canPage: true);
List<WebGridColumn> cols = new List<WebGridColumn>();
cols.Add(grid.Column("Name", "Name"));
cols.Add(grid.Column("Created"));
for (int i = 0; i < Model.FirstOrDefault().Data.Count; i++)
{
cols.Add(grid.Column(Model.FirstOrDefault().Data[i].Name, Model.FirstOrDefault().Data[i].Label,
format: item => @<text>@item.Data[i].Value</text>
));
}
}
@grid.GetHtml(
tableStyle: "table",
htmlAttributes: new { id = "MyGrid" },
columns: cols)
メタデータ列はすべての MyModel 間で共有されるため、それぞれに新しい列セットはありません。名前とラベルは、異なる MyModel 全体で同じになります。誰かが助けることができれば、それは大歓迎です。