ユーザーがデータを入力できるテンプレート フォームがあります。フォームは表として表されます。データベースでは、入力された各テンプレート フォームのデータが RowNum と ColNum で保存されるため、必要に応じてフォームを再作成できます。問題は、1 つのフォームの行ごとに列が異なることです。ここで明確にするために、簡単な例を示します。
ここでは、最初の行は空で、2 番目の行には画像を表示する 1 つの列があり、2 つの列を持つ 4 つの行が続きます。
これはほんの一例です。セットアップはフォームごとに異なります。今、私はこのようなデータを収集します:
List<object> dummyData = new List<object>()
{
new {Row = 1, Col = 1, IsRequired = true, QuestionText = "Yes?", FieldValue = "int"},
new {Row = 1, Col = 2, IsRequired = true, QuestionText = "Yes?", FieldValue = "int"},
new {Row = 2, Col = 1, IsRequired = true, QuestionText = "No?", FieldValue = "string"},
new {Row = 3, Col = 1, IsRequired = false, QuestionText = "No?", FieldValue = "string"}
};
ViewBag.Header = dummyData;
これはテスト用ですが、実際のデータはこのようになります。ご覧のとおり、最初と2番目のレコードは同じ行ですが、現在、ビューでデータを正しく表現する方法が思いつきません。
現在、私は<td colspan="2">
2つの列を必要としないことがわかっている場所を使用してすべてをハードコーディングしていますが、例のような状況にあるときに新しい行の代わりに余分な列を追加する方法についての解決策はありません:
new {Row = 1, Col = 1, IsRequired = true, QuestionText = "Yes?", FieldValue = "int"},
new {Row = 1, Col = 2, IsRequired = true, QuestionText = "Yes?", FieldValue = "int"},
まったく別のアプローチが必要なのかもしれませんが、今はforeach
ネストされたロジックを使用する方法を考えていますが、現在機能しているものは何も考えられません。
PS
現在、ビューで行うことは次のとおりです。
@{
foreach (var item in ViewBag.Header)
{
<tr><td>item.QuestionText</td><td>item.FieldValue</td></tr>
}
}