在GridView中存储时间戳

时间:2009-09-10 08:57:44

标签: asp.net sql-server

我有一个包含三列的表,我需要在ASP.NET页面上显示。 (SQL Server 2005,ASP.NET 2.0)

id int
value varchar(50)
tstamp timestamp

我使用timestamp字段来处理并发验证,因此它仅供内部使用,永远不会显示给最终用户。但我需要将它存储在某处以便进行适当的更新。

这是我的更新程序。

UPDATE ValueTable SET value = @value
WHERE (id = @id) AND (tstamp = @tstamp)

SELECT @tstamp=tstamp FROM ValueTable
WHERE id=@id

我使用SqlDataSource连接到我的数据库,架构有三列。我的网格视图只显示两个字段,因为时间戳字段是隐藏的(Visible = False)

当我描述我的asp页面时,即使我在表格中有一个“隐藏”字段,它看起来似乎也没有存储时间戳。

您如何在网页上存储时间戳值?它永远不会显示,但任何更新都需要它。

1 个答案:

答案 0 :(得分:0)

经过大量的游戏后,我觉得我找到了一个不错的解决方案。

问题似乎是“Visible = false”字段未包含在任何更新或删除命令中或绑定在其中。

HiddenField适用于Update命令,因此如果您没有执行任何删除命令,您可以通过将一个隐藏字段(Bind(TStamp))包含在模板化字段中的timestamp列中来完成。

问题在于,如果您正在执行Deletes,它也不会查看任何绑定的隐藏字段。

我想到的是将时间戳添加到网格视图的数据键。这样,它将与ID一起被视为复合键。

因此,简而言之,将时间戳添加到GridView / DetailsView等的DataKeyNames,并删除任何可见字段。这似乎可以解决问题。