Starší komentáře ke článku: Jak na mravné formuláře s použitelnou klávesou Enter v ASP.NET

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Robert Haken [MVP]

Datum vložení: 16.6.2007 1:32:12

Zdravim, Vaše závěry mě docela překvapují a musím říct, že nesdílím nadšení pro tyto Vaše metody. ad 1) DefaultButton bych neodsuzoval, bez skriptů dneska nechodí skoro nic a už je umí i ty nejblbější mobily. Ale budiž, třeba z důvodu accessibility můžeme chtít nezávislost na nich... ad 2) Řešit absenci události Click tlačítka tím, že budu odchytávat všechny možné i nemožné události ostatních controlů mi přijde zoufalé. Když pominu skutečnost, že většinu browserů není problém přemluvit na událost Click i bez DefaultButton (např. viz http://knowledge-base.havit.cz/asp-net/Udalosti-klavesnice-Enter-Click-form-jeden-submit-input-TextBox-button.aspx), pak nechápu, proč se bráníte využití standardního životního cyklu stránky a řešení plošného postbacku např. v události Load (pokud je IsPostback=true a IsCallback=false, pak je jasné, že došlo k odeslání formuláře, ať už jakkoliv). Vždycky ale záleží na konkrétním případě, čeho chcete dosáhnout. Buď chcete chytat všechny postbacky, nebo změny hodnot, nebo tlačítko, atp. Obecně je klíčem k úspěchu rozhodně spíše snaha zajistit si od browseru tu událost, než se ad 3) Umísťování výkonného kódu do obsluhy události a volání obsluhy události Btn_Click z obsluhy Enter_Click. No, u nás bych to nechal programátora přepsat... (extrakce výkonného kódu do samostatné metody volané z obou obslužných metod). ad 4) Že Vám zmizí obsah Repeateru při vypnutém ViewState souvisí s tím, že se Vám neprovede obsluha události s kódem, který plnění Repeateru zajišťuje. Pokud si volání tohoto kódu zajistíte i v případě nevolání dané události (o čemž jsem si myslel, že celý článek původně je - jak zajistit správnou obsluhu, když se mi nevolají potřebné události), tak můžete ViewState klidně nechat vypnutý a nijak to ním nesouvisí (čímž ale nechci nikoho nabádat k vypínání ViewState - rozhodně je potřeba nejdřív vědět, co děláte). Zapnout ViewState jenom kvůli tomu, že si nedokážu správně obsloužit Request, to mi přijde divné. ad 5) Kulišárna se skrytým polem. Uff, to už je lepší ta kulišárna se skrytým TextBoxem a vyvolá se Vám rovnou událost Click. Tohle mi přijde k ničemu, nicméně chápu, že Vám vadí obsluha "všeho" v Page_Load, když nepoužíváte strukturování kódu extrakcí do výkonných metod, ale vše mastíte do metod obsluhujících událost (a ještě voláte metodu obsluhující jinou událost).

Avatar

Autor komentáře: Petr S

Datum vložení: 29.6.2007 14:48:42

jestli by pánové Růžičko a Hakene nebylo lépe poradit mě - stačí jeden z Vás, oba jste za dva já (v asp.netu). Dobrá, tak za tři já. : mám abc.XML: <sklad> <zbozi cis="01" name="prvni"/> <zbozi cis="02" name="druhy"/> <zbozi cis="03" name="treti"/> </sklad> Potřebuji mu přidat uzel/element takto: <sklad> <zbozi cis="01" name="prvni"/> <zbozi cis="01" name="prvni"/> <zbozi cis="02" name="druhy"/> <zbozi cis="03" name="treti"/> </sklad> Umím: Dim xmldoc As XmlDocument = New XmlDocument() xmldoc.Load(Server.MapPath("abc.XML")) Dim EL1 As XmlElement = xmldoc.DocumentElement.ChildNodes.ItemOf (1) xmldoc.DocumentElement.PrependChild(EL1) xmldoc.Save(Server.MapPath("abc.XML")) ->Tohle uzel pouze přesunuje, ale já bych rád přidal kopii uzlu. Můžete mi napsat, jak jednoduše vytvořit kopii toho elementu kompletně s atributy a jejich hodnotami a pak to celé hezky PŘIDAT do XML?(bez nutnosti tvořit element a atribut po atributu a plnit je daty) Všude po internetu jsou stejné příklady na vytvoření jediného nového prázdného elementu...To je na mne málo. Děkuji.

Avatar

Autor komentáře: Petr S

Datum vložení: 30.6.2007 1:42:17

Už to mám. Dim EL1 As XmlElement = xmldoc.DocumentElement.ChildNodes.ItemOf(1) EL1 = EL1.CloneNode(False) a připojit: xmldoc.DocumentElement.PrependChild(EL1) Málem mě to umořilo.

Zpět na článek | Úvodní stránka Interval.cz