Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 为未知数量的行实现读写的最佳方法_Asp.net_Linq To Sql - Fatal编程技术网

Asp.net 为未知数量的行实现读写的最佳方法

Asp.net 为未知数量的行实现读写的最佳方法,asp.net,linq-to-sql,Asp.net,Linq To Sql,我问了一个类似的问题,但结果相当混乱,我很难填充,所以我尝试从另一个角度: 我有一个表,它存储流程中的步骤。一些公司只有6个步骤,而其他公司只有15个步骤,所以我创建了一个表,其中有15个不同的步骤槽。我想做的是设置一个控件,它在自己的行中显示每个步骤,旁边有一个标签,上面写着“step'#'”,而不是在相邻的列中。我还希望它不显示任何空白行。如果他们正在输入步骤说明,我希望他们必须按下一个按钮,添加一行,这样他们就不会只需要填写15个空文本框 在中执行此操作的最佳控件是什么?如何开始设置它?

我问了一个类似的问题,但结果相当混乱,我很难填充,所以我尝试从另一个角度:

我有一个表,它存储流程中的步骤。一些公司只有6个步骤,而其他公司只有15个步骤,所以我创建了一个表,其中有15个不同的步骤槽。我想做的是设置一个控件,它在自己的行中显示每个步骤,旁边有一个标签,上面写着“step'#'”,而不是在相邻的列中。我还希望它不显示任何空白行。如果他们正在输入步骤说明,我希望他们必须按下一个按钮,添加一行,这样他们就不会只需要填写15个空文本框


在中执行此操作的最佳控件是什么?如何开始设置它?

您正在将数据放入表中的字段名称中,这会使您的任务更加复杂。而不是将步骤存储在列中,如下所示:

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 };

然后,您可以使用许多不同的选项来显示这些步骤,比如在中继器中将集合用作数据源,或者循环遍历这些项,只为它们创建HTML代码并放入文本控件。

您的数据模型有缺陷。首先,您不应该将步骤存储为列。纠正这个问题,这个问题就会自然消失。我是否应该制作一个表,存储客户名称的1个步骤和一个外键,然后只填充来自该客户的所有步骤,等等?这是更好的方式吗?是的,这样可以猜测最大步骤数,并使显示它们变得轻而易举。我知道了,你们中的一位会将评论移动到响应中,以便我可以标记为答案吗?