Zadanie runat=server v novovytvorenom buttone   zodpovězená otázka

VB.NET, ASP.NET WebForms

Zdavím (VS2008,VB).

Vkladám za chodu programu buttony do webstránky a potrebujem ích prepojiť s procedúrou Button_Click. Nedarí sa mi nijako z kódu zabezpečiť, aby po vygenerovaní .aspx bol button runat=server.


 but(100) = New Button
            Me.Controls.Add(but(100))  'Zviditeľní prvok
            Me.but(100).Text = "Niečo"
            Me.but(100).Width = 20
            Me.but(100).Height = 20
            Me.but(100).runat = Server 'tu mi označuje chybu, neviem ako z kódu zabezpečiť aby bol button runat = server

'Neviem, ktoré z týchto dvoch prepojení je správne nakoľko sa mi to ešte nepodarilo spustiť
            Me.but(100).OnClientClick = "Button_Click"
            AddHandler Me.but(100).Click, New EventHandler(AddressOf Button_Click) 'Prepojí s novou procedúrov

            Me.but(100).ID = "buton1"

Public Sub Button_Click(ByVal sender As Object, ByVal e As EventArgs)
        'Kód. . . . . . 
End Sub 

Ďakujem za každé poštuchnutie

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

Pokud vytvoříte button v kódu tak má příznak runat="server" - logicky když jej vytváříte na straně serveru.Každopádně takto to nastavit nejde - v code-behind neexistuje vlastnost "runat".

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

Veď to... vyhadzuje mi to chybovú hlášku "Control 'ctl12' of type 'Button' must be placed inside a form tag with runat=server."

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

Přečtěte si tu chybovou hlášku pořádně.

Tu komponentu musíte dát dovnitř komponenty form, která má runat="server". Podívejte se do MasterPage, jestli tam nějakou takovou máte - pokud ne, tak to pochopitelně nebude fungovat.

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

Áno v Side1.Master mám komponentu <form id="form1" runat="server">. Nepoznáte nejakú lepšiu metódu, akým spôsobom vložiť za chodu programu do stránky niečo.aspx(ktorá je pod MasterPage) Button a prepojiť ho s nejakou procedúrou? Ide mi o to, že potrebujem vygenerovať určitý, vždy iný, počet Buttonov pri načítaní stránky niečo.aspx cez Page_Load. Približne podobnú metódu používam pri klasických aplikáciach ( http://www.vbnet.cz/forum-tema--3052-vb_... ) no tuto sa z nej asi nevysomárim.

Ďakujem za váš čas.

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

Ale vždyť mětodu máte správnou. Jen ta komponenta musí být uvnitř toho formu. V ASP.NET je jednou z podmínek, že celá stránka musí být jeden velký formulář.

Takže v okamžiku, kdy přidáváte komponenty do stránky, přidávejte je rovnou do toho form1, anebo do nějaké komponenty, která je uvnitř něj, třeba nějaký Panel a tak.

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

Jasne tomu chápem, zabudol som dodať že podobne tam pridávam aj label a ten mi nerobí žiadne problémy a pekne sa mi zobrazí no ak chcem pridať button - chyba.

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

Je to logické, Label ke své funkčnosti formulář nepotřebuje, je to jen obyčejný text ve stránce. Tlačítko odesílá data, musí být tedy ve formuláři. Stejně tak třeba TextBox atd.

Vše vyplývá z toho, že ASP.NET je jen nadstavba nad HTML. Tohle jsou prostě typické vlastnosti HTML. Tlačítko bez formuláře v HTML nemůže odeslat stránku na server.

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

Už to mám, dík nasmerovali ste ma správne. Upravil som zviditeľnovanie prvku:


 Me.Form.Controls.Add(but(100))  'Zviditeľní prvok
'Namiesto pôvodného
 Me.Controls.Add(but(100))  'Zviditeľní prvok
 

a už to šlape. Aj prepojenie


 AddHandler Me.but(100).Click, New EventHandler(AddressOf Button_Click) 'Prepojí s novou procedúrov

Je bez problémov.

Ešte raz ďakujem.

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

A jinak OnClientClick má obsahovat javascriptovou funkci a ne serverovou, takže to dejte pryč. Správně je ten AddHandler.

nahlásit spamnahlásit spam 1 / 1 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