Как передать данные в CustomControl из другой aspx страницы?

User avatar
AnyaGal
Уже с Приветом
Posts: 5771
Joined: 02 Dec 1999 10:01
Location: Saint-Petersburg --> Bellevue, WA

Как передать данные в CustomControl из другой aspx страницы?

Post by AnyaGal »

Такая ситуация (пример упрощенный)
Есть Web Custom Control (web control library project). На нем есть textbox (TextBox1) и button (btnSearch).
Контрол помечается на Page1.aspx
У контрола есть свойство "Name", то есть нa Page1 developer в design-time может его обозвать как угодно.

При нажатии на кнопку контрола btnSearch в новом окне броузера открывается другая страница Page2. На ней сидит DataGrid с данными. User выбирает строчку из DataGrid, жмет OK button (на Page2), Page2 закрывается, и эта выбранная строчка (допустим в DataGrid всего одна текстовая колонка) должна отобразиться на Page1 внутри CustomControla в TextBox1.

Как это сделать?

Если бы textbox1 был не внутри custom control, а просто na Page1, to можно было бы добраться из Page2 btnOK_Click через script "window.opener.Form1.TextBox1.value".
(Form1 vzyato is <form id="Form1" method="post" runat="server">)



I
Volant
Уже с Приветом
Posts: 1346
Joined: 22 Sep 2001 09:01
Location: Dallas TX, USA

Re: Как передать данные в CustomControl из другой aspx страницы?

Post by Volant »

Если имя Web Custom Control заранее не известно, то можно переддавать полное textbox1 имя (Web Custom Control + имя textbox1) на Page2 через query string или через Form1 hidden field.

Page2 генерирует javascript для события на клиенте btnOK :

onclick="window.opener.Form1.(полное имя TextBox1, полученное из query string или через Form1 hidden field ).value =..."
User avatar
AnyaGal
Уже с Приветом
Posts: 5771
Joined: 02 Dec 1999 10:01
Location: Saint-Petersburg --> Bellevue, WA

Post by AnyaGal »

Спасибо! :)
А можно как-нибудь сделать, чтобы результат (выбранная строка из таблицы) передать внутрь самого custom control?

У меня Page2 запускается внутри контрола по событию btnSearch_Click (то есть сам код внутри dll контрола. Хотелось бы чтобы и результат обрабатывался там же внутри этой dll. Чтобы контрол был самодостаточный - нажал кнопку на контроле, появилась новая страница с таблицей, выбрал строку, закрыл страницу, textbox в контроле обновился. :roll:

Я в asp.net и javascript не большой спец пока, только первые шишки набиваю, смотрю разные примеры, но примера, идентичного своей задаче, пока не нашла, так что все советы, вплоть до вообще другого подхода приму с благодарностью. :gen1:
User avatar
AnyaGal
Уже с Приветом
Posts: 5771
Joined: 02 Dec 1999 10:01
Location: Saint-Petersburg --> Bellevue, WA

Post by AnyaGal »

Поднимаю наверх... :)
Может кто-нибудь помочь?
Спасибо
lozzy
Уже с Приветом
Posts: 2435
Joined: 12 Jun 2001 09:01

Post by lozzy »

AnyaGal wrote:Спасибо! :)
А можно как-нибудь сделать, чтобы результат (выбранная строка из таблицы) передать внутрь самого custom control?

У меня Page2 запускается внутри контрола по событию btnSearch_Click (то есть сам код внутри dll контрола. Хотелось бы чтобы и результат обрабатывался там же внутри этой dll. Чтобы контрол был самодостаточный - нажал кнопку на контроле, появилась новая страница с таблицей, выбрал строку, закрыл страницу, textbox в контроле обновился. :roll:



Тут не важно, custom это control или не custom. У нового (открытого) окна есть свойство opener, и этим можно воспользоваться. Пример

1.html
<script>
function newWin(url, name, width, height) {
params = 'scrollbars,resizable,width'+width+',height='+height+',top=0'
popupWin = window.open(url, name, params);
}
</script>
<input id="searchBox" name="searchBox">
<input type="button" value="Search" onclick="javascript:newWin('2.html', 'searchResult', 100, 200)">


2.html
<script>
function setValue(value) {
var searchBox = window.opener.document.getElementById('searchBox')
searchBox.value = value
window.close()
}
</script>
<a href="javascript:setValue('Result 1')">Result 1</a><br>
<a href="javascript:setValue('Result 2')">Result 2</a>


Работает в IE и Mozilla, Netscape 4 я уже давно не проверяю.
Steel helmet protects your teeth from the morning to the evening.
User avatar
JustMax
Уже с Приветом
Posts: 1476
Joined: 05 Dec 2000 10:01
Location: Vilnius -> Bonn

Post by JustMax »

[offtopic]
А ешио кто-то утверждает что ASP.NET верх удобства :mrgreen:
[/offtopic]
lozzy
Уже с Приветом
Posts: 2435
Joined: 12 Jun 2001 09:01

Post by lozzy »

JustMax wrote:[offtopic]
А ешио кто-то утверждает что ASP.NET верх удобства :mrgreen:
[/offtopic]


Не понял юмора. Приведенный код не является истиной в последней инстанции. Это просто экзэмпл того, как надо делать. Разумеется, в DataGrid-е можно сделать ItemTemplate по образу и подобию данного примера. Если Вы знаете способ, как это сделать быстрее и проще - you are welcomed ! ;)
Steel helmet protects your teeth from the morning to the evening.
User avatar
SippyFox
Новичок
Posts: 66
Joined: 31 Jul 2003 14:14
Location: SPb->USA

Post by SippyFox »

в продолжение offtopic

ASP или .NET тут вообще ни при чем, обычный жабаскрипт.
Какая-то паранойя к MS у некоторых образовалась.
Единственно, что может спасти смертельно раненного кота, -- это глоток бензина...

Return to “Вопросы и новости IT”