我同样问了一个问题,但结果非常混乱,我遇到了困难,所以我试图从另一个角度来看: Question concerning asp:listview and multiple dynamically created controls
我有一个表存储流程中的步骤。有些公司只有6个步骤而有些公司有15个步骤,因此我创建了一个包含15个不同插槽的表格。我想要做的是设置一个控件,在它自己的行中显示每个步骤,旁边有一个标签,表示“Step'#'”,而不是在相邻的列中。我也希望它不显示任何空白行。如果他们正在输入步骤说明,我希望他们必须按一个会添加一行的按钮,这样他们就不会只给出15个空文本框来填写。
进行此操作的最佳控件是什么?如何开始设置?
答案 0 :(得分:2)
您将数据放在表格中的字段名称中,这使您的任务更加复杂。而不是将步骤存储在列中,如下所示:
CompanyId Step1 Step2 Step3 Step4 Step5 Step 6 Step7 ...
1 alpha beta gamma
2 one two three four five
您应该将步骤存储为行,以便在步骤中将步骤编号作为数据:
CompanyId StepNumber Step
1 1 alpha
1 2 beta
1 3 gamma
2 1 one
2 2 two
2 3 three
2 4 four
2 5 five
这样您就不会获得任何未使用的字段,并且数据模型不会对步骤数量造成任何限制。此外,您可以轻松地将这些步骤作为集合,而不必单独获取每个步骤并添加到集合中。
类似的东西:
var steps =
from s in CompanySteps
where s.CompanyId = 2
orderby s.StepNumber
select new { s.StepNumber, s.Step };
然后你有很多不同的选项来显示这些步骤,比如在Repeater中使用集合作为数据源,或者遍历这些项目,只需为它们创建HTML代码并放入Literal控件。