1

目前我正在开发一个 Web 服务系统,使用 ASP.NET 和 C# 作为代码。对于数据库,我们使用 MS SQL。系统中有一个功能可以让您根据状态查看申请表的状态,比如待处理、进行中、已清除和已取消。该页面涉及使用 Gridview,如下所示(这只是一个示例)

| 应用程序 ID | 日期| 姓名| 状态| 状态日期|

在我的SQL 表中,有一些列可以容纳申请表状态的更新,例如DatePending、DateInProgress、DateCleared、DateCancelled,即DateInProgress 包含申请表现在经过处理并标记为In Progress 的日期。所有这些列都在一个表中。

我现在的问题是,如何获取特定状态的日期并将其显示在 Gridview 的最后一列?例如,如果一个申请表被取消,它应该显示记录的状态为取消,并显示它被取消的日期。

输出应该是这样的:

| 应用程序 ID | 日期| 姓名| 状态| 状态日期|

| 12345 | 2013 年 5 月 20 日 | 阿尔文 | 进行中 | 2013 年 5 月 22 日

| 12346 | 2013 年 7 月 1 日 | 玛吉 | 清除 | 2013 年 7 月 10 日

| 12347 | 2013 年 7 月 5 日 | 罗宾 | 取消 | 2013 年 7 月 6 日

如果您有进一步的问题/澄清,请随时表达。谢谢。

4

1 回答 1

0

如果我是你,我会改变我的数据库的结构。从长远来看,拥有状态和日期列对您没有帮助。此外,您如何轻松识别哪个是最新状态?您的查询必须非常复杂才能处理此问题。

更好的做法是拥有一个链接的“状态”表,其结构如下:-

AppFormID <---to join to your form table
StatusType <---Pending, cancelled etc
Status Date <---obvious, really

像这样设置它会让你的生活变得更轻松,并且如果(何时)你决定要创造新的身份,也不会限制你。

于 2013-11-11T12:06:30.530 回答