Такая ситуация (пример упрощенный)
Есть 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
Как передать данные в CustomControl из другой aspx страницы?
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
-
- Уже с Приветом
- Posts: 1346
- Joined: 22 Sep 2001 09:01
- Location: Dallas TX, USA
Re: Как передать данные в CustomControl из другой aspx страницы?
Если имя 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 =..."
Page2 генерирует javascript для события на клиенте btnOK :
onclick="window.opener.Form1.(полное имя TextBox1, полученное из query string или через Form1 hidden field ).value =..."
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
Спасибо!
А можно как-нибудь сделать, чтобы результат (выбранная строка из таблицы) передать внутрь самого custom control?
У меня Page2 запускается внутри контрола по событию btnSearch_Click (то есть сам код внутри dll контрола. Хотелось бы чтобы и результат обрабатывался там же внутри этой dll. Чтобы контрол был самодостаточный - нажал кнопку на контроле, появилась новая страница с таблицей, выбрал строку, закрыл страницу, textbox в контроле обновился.
Я в asp.net и javascript не большой спец пока, только первые шишки набиваю, смотрю разные примеры, но примера, идентичного своей задаче, пока не нашла, так что все советы, вплоть до вообще другого подхода приму с благодарностью.
А можно как-нибудь сделать, чтобы результат (выбранная строка из таблицы) передать внутрь самого custom control?
У меня Page2 запускается внутри контрола по событию btnSearch_Click (то есть сам код внутри dll контрола. Хотелось бы чтобы и результат обрабатывался там же внутри этой dll. Чтобы контрол был самодостаточный - нажал кнопку на контроле, появилась новая страница с таблицей, выбрал строку, закрыл страницу, textbox в контроле обновился.
Я в asp.net и javascript не большой спец пока, только первые шишки набиваю, смотрю разные примеры, но примера, идентичного своей задаче, пока не нашла, так что все советы, вплоть до вообще другого подхода приму с благодарностью.
-
- Уже с Приветом
- Posts: 5771
- Joined: 02 Dec 1999 10:01
- Location: Saint-Petersburg --> Bellevue, WA
-
- Уже с Приветом
- Posts: 2435
- Joined: 12 Jun 2001 09:01
AnyaGal wrote:Спасибо!
А можно как-нибудь сделать, чтобы результат (выбранная строка из таблицы) передать внутрь самого custom control?
У меня Page2 запускается внутри контрола по событию btnSearch_Click (то есть сам код внутри dll контрола. Хотелось бы чтобы и результат обрабатывался там же внутри этой dll. Чтобы контрол был самодостаточный - нажал кнопку на контроле, появилась новая страница с таблицей, выбрал строку, закрыл страницу, textbox в контроле обновился.
Тут не важно, 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.
-
- Уже с Приветом
- Posts: 1476
- Joined: 05 Dec 2000 10:01
- Location: Vilnius -> Bonn
-
- Уже с Приветом
- Posts: 2435
- Joined: 12 Jun 2001 09:01
JustMax wrote:[offtopic]
А ешио кто-то утверждает что ASP.NET верх удобства
[/offtopic]
Не понял юмора. Приведенный код не является истиной в последней инстанции. Это просто экзэмпл того, как надо делать. Разумеется, в DataGrid-е можно сделать ItemTemplate по образу и подобию данного примера. Если Вы знаете способ, как это сделать быстрее и проще - you are welcomed !
Steel helmet protects your teeth from the morning to the evening.
-
- Новичок
- Posts: 66
- Joined: 31 Jul 2003 14:14
- Location: SPb->USA