Otevření nového okna   otázka

ASP.NET WebForms

Dobrý den,

lámu si již pár dní hlavu s tímto asi jednoduchým problémem:

Popíšu to co nejvíce zjednodušeně:

Mám stránku "Page1.aspx"

Uvnitř "TextBox1", "Button1"

Dále mám stránku "Page2.aspx"

Uvnitř "TextBox2"

Nyní bych potřeboval poradit s tím, jak bych po stisknutí "Button1" na "page1.aspx" otevřel nové okno prohlížeče se stránkou "page2.aspx" s tím, že obsah pole "TextBox1" by se přenesl do pole "TextBox2" v novém okně.

Předem děkuji za radu a přeji příjemný den...Petr

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud chcete stránku otevřít v novém okně, musíte použít javascript, funkci window.open. Na hodnotu v poli TextBox1 se dostanete pomocí skriptu

document.getElementById("id_komponenty").value

.

Potíž je s hodnotou id_komponenty, to není TextBox1, ale skutečné ID, které se vyrenderovalo do stránky. Ten skript musíte poskládat v kódu a dosadit tam TextBox1.ClientID.

Případně hodnotu vyzobnout přes jQuery, stačí TextBox1 přidat nějakou pseudo CSS třídu nebo atribut, podle kterého jej najdete.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Myslím, že tazateli šlo o přenesení této informace z textoxu mezi dvěma okny prohlížeče.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Konkrétně mi jde o to, že mám přehledový formulář (DataList). V DataListu mám v řádcích zobrazenu (v textboxu1) hodnotu Pimárního klíče tabulky kterou prohlížím, ..., a button1. Po stisknutí Buttonu1 chci otevřít nové okno s editačním formulářem tohoto jednoho záznamu v tabulce.

Aby tento editační formulář věděl, jaký záznam v tabulce chci editovat, napadlo mě tedy jedině přenést tuto hodnotu primárního klíč stisknutím Buttonu z DataListu na přehledovém formuláři do nového okna s editačním formulářem a textboxem2, a tam při načítání provést select na ostatní sloupce v tabulce za podmínky "Hodnota Primární klíče"=@TextBox2

Možná že na to jdu úplně špatně, ale nějak se mi to nedaří dát dohromady, nebo vymyslet jiný způsob. Petr

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A proč neuložíte Primary key do query stringu a pak pouze nezavoláte pomocí javascriptu nové okno,kterému předáte dané URL.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

To máte pravdu, také mě to mohlo napadnout. Toto je asi nejjednodužší řešení. Zkusil jsem to tímto způsobem, a funguje to bez problémů v Opeře, ale v IE je s tím problém.

Primární klíč jsem vložil přímo do textu na Button1 a přidal funkci:

OnClientClick="self.open('./frm/frm_skdh01.aspx?PrKey=' + this.text , 'Detail', 'toolbar=no, menubar=no, location=no, directories=no, scrollbars=no, resizable=no, status=no, width=640, height=480, top=80, left=150')"

a do nového okna vložil script:

Sub Page_Load(ByVal Sender as Object, ByVal E as EventArgs)
    If Len(Request.QueryString("PrKey")) = 0 Then
        TextBox2.Text = "Záznam neexistuje"
    Else
        TextBox2.Text = "Záznam číslo : " _
            & Request.QueryString("PrKey")
    End If
End Sub

V opeře je vše O.K., a v novém okně se v TextBoxu2 zobrazí např.: "Záznam číslo : 0123"

V IE se ovšem zobrazí text "Záznam číslo : undefined"

Problém je již zřejmě na prvním formuláři, ale snad na to přijdu.

Každopádně všem děkuji za velmi přínosnou inspiraci. Petr

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To proto, že this.text není ve standardu - Opera si ho tam jaksi přidala.

this.value by mělo fungovat všude. Na pomoc se hodí developer tools (má je Opera, Firefox i IE), tam uvidíte přesně, na jakém javascriptovém objektu můžete použít jakou funkci.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Máte pravdu, nakonec jsem to vyřešil takto:

<asp:Linkbutton Width="75" height="12" runat="server" text='<%# Eval("PrimarniKlic") %>' OnClientClick=<%# "self.open('./NejakaStranka.aspx?PrKey=" _ 
            & eval ("PrimarniKlic") _ 
            & "', 'DetailZaznamu', 'toolbar=no, menubar=no, location=no, directories=no, scrollbars=no, resizable=no, status=no, width=640, height=480, top=80, left=150'); return false" _

Díky, P.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback