Как получить значение скрытого поля на дочерней странице при событии загрузки страницы - PullRequest
1 голос
/ 08 апреля 2011

У меня есть значение в hdnField в form1.aspx и открытие всплывающей страницы form2.aspx. Я хочу получить это hdnField значение в form2.aspx.vb при загрузке страницы.

Как мы можем сделать это без использования строки запроса, переменной сеанса, файлов cookie?

Ответы [ 4 ]

2 голосов
/ 08 апреля 2011

Если вы используете Server.Transfer, чтобы перейти к form2.aspx из form1.aspx, вы можете использовать следующий код на своей странице Form2.aspx, чтобы получить значение скрытого поля в form1.aspx.

HiddenField hdnFieldValue = (HiddenField)PreviousPage.Controls[0].FindControl("hdnField");

EDIT Я использую код выше, потому что у меня есть мастер-страница, но если вы не используете мастер-страницу, вам нужно только это.

HiddenField hdnFieldValue = (HiddenField)PreviousPage.FindControl("hdnField");
1 голос
/ 08 апреля 2011

согласно коду счастья

В JavaScript объект window.opener можно использовать для доступа к элементам HTML, присутствующим в родительском окне, из дочернего окна (всплывающее окно или аналогичное).

Давайте рассмотрим два файла HTML:

openwindow.htm - здесь есть текстовое поле и кнопка, нажатие на которую открывает файл target.htm в новом окне браузера target.htm - здесь есть код для изменения значения текстового поля, присутствующего в родительском окне (openwindow.htm), которое открывает этот файл

openwindow.htm: (parent window) 
<html> 
<script language="javascript"> 
function openwindow() 
{ 
window.open("target.htm","_blank","height=200,width=400, 
status=yes,toolbar=no,menubar=no,location=no") 
} 
</script> 
<body> 
<form name=frm> 
<input id=text1 type=text> 
<input type=button onclick="javascript:openwindow()" value="Open window.."> 
</form> 
</body> 
</html>

Если вы не знакомы с методом window.open (), вам будет интересно, что такое «высота = 200, ширина = 400, статус = да, панель инструментов = нет, меню = нет, местоположение = нет», дон не беспокойтесь, он просто определяет размер и внешний вид нового окна, эту строку кода можно изменить на window.open ("target.htm", "_ blank"), просто посмотрите разницу в выводе, если вы измените.

Обратите внимание, что если параметр «_blank» не предоставлен, то функциональность будет отличаться в IE и Firefox, в Firefox вместо нового окна будет открыта новая вкладка. Просто используйте window.open ("target.htm") и убедитесь сами. Для получения дополнительной информации о методе window.open () и его параметрах см. http://msdn2.microsoft.com/en-us/library/ms536651(VS.85).aspx. Также обратите внимание, что в атрибуте id необходим, тогда только код target.htm (показанный ниже) будет выполняться в Firefox.

target.htm: (child window) 
<html> 
<script language="javascript"> 
function changeparent() 
{ 
window.opener.document.getElementById('text1').value="Value changed.." 
} 
</script> 
<body> 
<form> 
<input type=button onclick="javascript:changeparent()" value="Change opener's textbox's value.."> 
</form> 
</body> 
</html>

Надеюсь, вы сможете понять, что происходит в приведенном выше коде, в новом окне (target.htm) мы используем объект window.opener для доступа к текстовому полю, присутствующему в родительском окне (openwindow.htm). Вам просто нужно добавить префикс «window.opener» и написать тот же код, который вы напишите на HTML-странице родительского окна, чтобы получить доступ к его элементам.

Обновленный ответ

1. Put a hidden field on the child page.
   <asp:HiddenField ID="hidChild" runat="server"/>
2. in your javascript function 
   var childHidden = document.getElementById('<%hidChild.ClientID%>');
    childHidden.value = window.opener.document.getElementById('text1').value;
3. Now access this hidden control on the page load event.
   Response.Write(hidChild.Value); or Session["ParentVal"] =hidChild.Value;

таким образом, у вас будет значение родительской страницы при загрузке страницы дочернего элемента.

0 голосов
/ 08 апреля 2011

Вы можете сохранить значение поля из формы 1 в переменной сеанса, когда форма 2 открыта, вы можете получить к ней доступ из сеанса.

Вы можете создать базовую страницу со свойством, которое использует сеанс, и сделать обе страницы инерриетными из него.

например.

public class CustomPage : Page
{
  public string YourProperty
  {
   get
   {
     if (Session["YourProperty"] == null)
     {
       Session["YourProperty"] = string.empty;
     }

      return Session["YourProperty"] as string;
    }   
   set
   {
     Session["YourProperty"] = value;
   }
 }

Затем со страницы одним нажатием кнопки.

this.YourProperty = value;
//Open window

на стр. 2.

txtTextBox.Text = this.YourProperty;
0 голосов
/ 08 апреля 2011

Вы можете передать значение hdnField в качестве параметра строки запроса в form2.aspx при открытии всплывающего окна.

form2.aspx?hdnFieldValue=xxx
...