我有一个场景,在上传的excel中必须跨数据库进行验证,并且excel中的无效数据必须以网格显示以供用户确认。在用户确认后,必须在数据库中更新excel中唯一有效的数据。我完全能够在网格中实现上传,验证和显示。
场景:
表包含用户数据,例如名称,名称和公司。
上传的Excel中提供的名称字段必须在数据库中进行交叉验证。如果任何名称都不可用,则必须将数据显示给网格中的用户。
按下“继续”按钮,必须忽略无效数据,并且只需要有效数据来更新表。
我不想为此阅读Uploaded excel两次。
excel中可以提供大量数据用于上传。所以这个操作必须尽可能快。有没有更好的解决方案
听起来你正试图确定如何通过几次往返来保持数据。首先,用户上传它。然后,您可能必须将其呈现给用户,并且通过继续,他们实际上必须重新提交它,并且在第二次提交时,有效行存储在表中。
我同意您不希望用户重新提交电子表格。但是所有这些数据都需要在某个地方保留,以便在用户看到无效行之后对其进行处理。
我会考虑在从Excel上传后立即将数据存储在SQL表中。现在,您可以对表中的数据执行验证,并将行标记为有效或无效。如果您只是验证其他查找表中是否存在某些数据,则可以通过存储过程批量完成该验证。
现在你有了一组行,所有行都带有一些共同的键,用于将它们标识为属于特定的用户操作。现在,您可以为用户返回无效行,以确认它们将被忽略。当用户确认时,您将有效行迁移到“真实”表并删除所有行。您也可以在一段时间后使这些行到期。如果用户在给定时间后未批准他们,则他们需要再次上传。
这种方法的一个好处是,您可以将此过程分解为不同的,更小的步骤,这有助于管理复杂性。一步执行初始上传。另一个返回一组无效行。另一个批准一组有效行。较小的步骤使维护和单元测试更容易。
另一个好处是您可以将进程与Excel上载分离。也许在将来的某个时候,您将需要处理XML上传。只有第一步需要改变。一旦您的数据进入表格,它就不再重要。
您是说您希望程序阻止用户输入,这样您就不会进行两次昂贵的操作?
只要用户单击该按钮,就可以使用第一部分代码来禁用按钮和所有其他按钮。同样适当的是,添加一个加载图标或状态消息,使其清晰。然后,当操作完成时,重新启用相应的按钮。