Сохранить временную метку в GridView - PullRequest
0 голосов
/ 10 сентября 2009

У меня есть таблица с тремя столбцами, которые мне нужно отобразить на странице ASP.NET. (SQL Server 2005, ASP.NET 2.0)

id int
value varchar(50)
tstamp timestamp

Я использую поле timestamp для обработки проверки параллелизма, поэтому оно предназначено только для внутреннего использования и никогда не будет отображаться конечному пользователю. Но мне нужно хранить его где-то, чтобы делать правильные обновления.

Вот мое обновление sproc.

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 голосов
/ 10 сентября 2009

После долгих тренировок, я думаю, я нашел полуприличное решение.

Кажется, проблема в том, что поля, которые "Visible = false", не включены или не связаны ни с какими командами обновления или удаления.

HiddenField отлично работает для команд обновления, поэтому, если вы не выполняете никаких команд удаления, все будет в порядке, если вы включите скрытое поле, которое связано (Bind (TStamp)) со столбцом метки времени в шаблонном поле.

Проблема в том, что если вы также выполняете удаление, оно не смотрит ни на какие связанные, скрытые поля.

Я придумал добавить временную метку к ключам данных в виде сетки. Таким образом, он будет считаться составным ключом вместе с идентификатором.

Короче говоря, добавьте метку времени в DataKeyNames GridView / DetailsView и т. Д. И удалите все видимые поля. Похоже, это помогло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...