Вы можете получить текущий URL с помощью window.location.href
, поэтому, если вы возьмете href
на целевой странице, то у вас будет целевой URL.
Вы можете получить ссылку на URL с помощью document.referrer
. Это также нужно захватить на целевой странице.
Я давно не пользовался jQuery, но я считаю, что синтаксис будет примерно таким:
// For this example I have assumed your fields have the IDs landingURL and referralURL.
$('#landingURL').val(window.location.href);
$('#referralURL').val(document.referrer);
Теперь, если целевая страница не совпадает с страницей формы, и вы необходимо передать эту информацию на страницу формы, используя только JavaScript в браузере, тогда я бы предложил вам захватить URL целевой страницы и URL реферала, как описано выше, и сохранить их либо в localStorage
, либо sessionStorage
.
Вот пример того, как вы можете это сделать:
// On the landing page:
localStorage.setItem('landingURL', window.location.href);
localStorage.setItem('referralURL', document.referrer);
// On the form page:
$('#landingURL').val(localStorage.getItem('landingURL'));
$('#referralURL').val(localStorage.getItem('referralURL'));
Надежда, которая помогает!
Вы могли использовать [ROW_NUMBER][1] и раздел Item1ID
UPDATE t1
SET t1.SortOrder = t2.SortOrder
FROM @t t1
INNER JOIN
(SELECT Item1ID, Item2ID, ROW_NUMBER() OVER
(PARTITION BY Item1ID ORDER BY Item1ID, Item2ID) AS SortOrder
from @t) t2
ON t1.Item1ID = t2.Item1ID
AND t1.Item2ID = t2.Item2ID
Теоретически, Вы могли сказать:
update mytable
set sortOrder = row_number()
over (partition by item1id order by item1id, item2id) from mytable
Однако это даст Вам сообщение об ошибке:
Msg 4108, Level 15, State 1, Line 1
Windowed functions can only appear in the SELECT or ORDER BY clauses.
Таким образом, на самом деле необходимо сделать это на двух шагах - сначала выбирают значения во временную таблицу и затем обновляют оригинал от временной таблицы.
Например:
select
item1ID,
item2ID,
row_number()
over (partition by item1id order by item1id, item2id) as sortOrder
into #tmp
from mytable
update mytable
set sortOrder = T.sortOrder
FROM
mytable M
inner join #tmp T
on M.item1ID = T.item1ID
AND M.item2ID = T.item2ID
drop table #tmp
Вы затрагиваете что-то фундаментальное о реляционной модели здесь. В базах данных в целом, нет такой вещи как внутреннее упорядочивание. Если Вы хотите вытащить упорядочивание из данных каждый раз, когда Вы смотрите на таблицу, необходимо указать тот порядок явно.
Таким образом в общем смысле, Вы просите невозможное. Вы не можете просто UPDATE
таблица и получает автоматическое упорядочивание любой запрос, который Вы делаете на ней. Но в смысле запроса запросом, Вы могли всегда помещать"ORDER BY item1ID, sortOrder
"в любом SELECT
оператор Вы обращаетесь к таблице.
В SQL Server 2005 Вы могли записать представление и представить его Вашему клиенту, с помощью этого старого взлома:
SELECT TOP 100 PERCENT
item1ID, item2ID, sortOrder -- and all the other columns
FROM YourTable
ORDER BY item1ID, sortOrder;
Существуют способы сделать такое представление обновляемым, но необходимо будет исследовать это самостоятельно. Не слишком трудно сделать.
Если Вы никогда не собираетесь вставлять или изменять данные в этой таблице, и если Вы готовы повторно импортировать данные в таблицу снова, Вы могли бы определить свою таблицу с идентификационными данными, то вставить Ваши данные в таблицу в соответствующем порядке. Затем Вы всегда заказывали бы одним столбцом идентификационных данных. Это работало бы, если Ваш клиент всегда просматривает данные в программе, которая позволяет сортировать по отдельному столбцу. (BTW, никогда не используйте IDENTITY
функция с этой целью. Это не будет работать.)
CREATE TABLE YourTable (
SingleSortColumn INT IDENTITY(1,1) NOT NULL,
...
);
INSERT INTO YourTable (
item1ID, item2ID, sortOrder -- everything except the SingleSortColumn
)
SELECT -- all your columns
INTO YourTable
FROM yadda yadda yadda
ORDER BY item1ID, sortOrder;
Надежда это полезно. Извините, если я педантичен.