У меня есть скрытое поле:
<ContentTemplate>
<asp:HiddenField ID="hiddenId" runat="server"/>
</ContentTemplate>
И jQuery:
var emptyVal = "123";
$("[id*=gridview] td").bind("click", function () {
var row = $(this).parent();
$("[id*=gridview] tr").each(function () {
if ($(this)[0] != row[0]) {
$("td", this).removeClass("");
}
});
if (!$(this).hasClass("")) {
$(this).addClass("");
}
else
{
$(this).removeClass("");
$('#<%= hiddenId.ClientID %>').val(emptyVal);
alert($('#<%= hiddenId.ClientID %>').val());
}
Код позади:
var value = hiddenId.Value;
Я добавил событие onclick
в строках gridview в rowdatabound
:
e.Row.Attributes.Add("onclick","javascript: getElementById('" + hiddenId.ClientID + "').value='" + e.Row.RowIndex + "';");
Таким образом, каждый щелчок строки индекс строки хранится в скрытом поле.
Моя проблема здесь в том, что я не могу получить новое значение на стороне сервера. Я использовал alert
в jquery, чтобы проверить, обновляется ли значение. Он обновляется, но когда он попадает в точку останова на стороне сервера, я все равно получаю старое значение.
Я даже пытался использовать это, но все равно не повезло:
var hiddenValue = Request.Form[hiddenId.UniqueID];
Что я могу сделать, чтобы получить новое значение из скрытого поля? Благодарю!
РЕДАКТИРОВАТЬ:
Цель jQuery
- выделить строку выбранного gridview. При повторном нажатии той же строки он удалит выделение строки. И в то же время он должен удалить значение из скрытого поля.
Пример сценария:
1) Пользователь щелкнет строку
2) Скрытое поле будет заполнено, например, int
0.
3) Когда пользователь снова нажмет одну и ту же строку, он удалит значение скрытого поля.
Я решил свою проблему, используя следующий код:
var hiddenValue = Request.Form[hiddenId.Value];
Попробуйте использовать стандартный тег ввода html, как это (без runat = server):
<input type="hidden" id="hiddenId" name="hiddenId" value="" />
Затем в вашем коде за ссылкой сделайте следующее:
var value = Request.Form["hiddenId"];
Конечно, вам нужно будет изменить код jQuery и другого кода за кодом, чтобы использовать правильный идентификатор.
alert
, новое значение отображается ..
Ваши селекторы jQuery выглядят странно, но я, возможно, не понимаю все, что вы делаете. Не могли бы вы использовать:
$('#hiddenId').val(emptyVal);
Кроме того, похоже, что ваш селектор JQuery использует одно значение:
$('#<%= hiddenId.ClientID %>')
Но ваш Request.Form ссылается на что-то другое:
hiddenId.UniqueID
$(this).addClass("");
:) что это за точно?