Práce s TextBoxem uvnitř FormView   zodpovězená otázka

ASP.NET WebForms

Zdravím, narazil jsem na jednu záludnost při práci s textBoxem který je unvitř FormView.

Na stránce přes kterou se přidávají příspěvky mám formView ve kterém je několik textboxů. Po jejich vyplnění a stisknutí tlačítka se provede vložení příspěvku do databáze. Potud vše funguje ok.

Na vložení příspěvku mám napsanou pěknou stored proceduru která mi output parametrem vrátí info o tom zda byl příspěvek uložen. Pokud ne, řekne mi důvod (neexistující ID kategorie, článek se shodným jménem už někdo někdy vložil atd.) pokud příspěvek vloží, prozradí mi jeho ID.

Tyto output parametry si v aplikaci odchytím a reaguji podle nich. To je také ok.

A teď můj problém: pokud článek není vložen, informuju o tom uživatele, ale chci aby textboxy zůstaly vyplněné (aby to ten chudák nemusel psát znovu). Chtěl jsem to tedy řešit tak, že si data před odesláním uložím do viewState (data se tam v pořádku uloží, to mám ověřené). Jen nevím jak je mám nacpat zpátky do toho textboxu. Pokud totiž mám textbox který je volně na stránce, není problém mu nastavit vlastnost text na hodnotu načtenou z viewState. Pokud je ale textbox ve formView, dostanu se na něj následovně:

Dim txtAutor As TextBox = CType(FwNewPost.FindControl("txtAuthor"), TextBox)
Label1.Text=txtAutor.text

takto můžu číst jeho vlastnosti, když se ale pokusím nastavit vlastnost text, stejně zůstane prázdná:

Dim txtAutor As TextBox = CType(FwNewPost.FindControl("txtAuthor"), TextBox)
txtAutor.text=Label1.Text

Jdu na to uplně blbě nebo se jedná o nějakou záludnost? Napadlo mě že by to šlo řešit uplně jinak (např. že bych si před odesláním příspěvku poslal pomocí AJAXU požadavek na db abych zjistil, zda daný příspěvek bude vložen nebo ne) ale nechci začínat s AJAXem když se teprve učím ASP .NET

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

Stačí v události ItemInserted či ItemUpdated podle output parametrů zjistit, jestli se to povedlo (možná je lepší ve stored proceduře přes funkci RAISERROR vyvolat výjimku, ale to je asi jedno) a nastavit e.ExceptionHandled a e.KeepInEditMode na True. Tím by měl FormView zůstat vyplněný v režimu, kde byl před tím.

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

To je přesně ono, děkuji:)

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