我有一个包含三列的表,我需要在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页面时,即使我在表格中有一个“隐藏”字段,它看起来似乎也没有存储时间戳。
您如何在网页上存储时间戳值?它永远不会显示,但任何更新都需要它。
答案 0 :(得分:0)
经过大量的游戏后,我觉得我找到了一个不错的解决方案。
问题似乎是“Visible = false”字段未包含在任何更新或删除命令中或绑定在其中。
HiddenField适用于Update命令,因此如果您没有执行任何删除命令,您可以通过将一个隐藏字段(Bind(TStamp))包含在模板化字段中的timestamp列中来完成。
问题在于,如果您正在执行Deletes,它也不会查看任何绑定的隐藏字段。
我想到的是将时间戳添加到网格视图的数据键。这样,它将与ID一起被视为复合键。
因此,简而言之,将时间戳添加到GridView / DetailsView等的DataKeyNames,并删除任何可见字段。这似乎可以解决问题。