FormView - předání hodnot   otázka

ASP.NET WebForms

Dobrý den,

mám na stránce umístěn FormView a v něm Label ve kterém potřebuji měnit vlastnost Text podle přihlášeného uživatele.

Mám vytvořenou událost, kde načítám hodnotu z databáze a porovnávám ji v podmínce a pak přiřazuji Labelu vlastnost Text.

Takto:

                    If com.ExecuteScalar().ToString() = "" Then
                        CType(FormView_Profile.Controls("lbl_01"), Label).Text = "Domácnost"

Při spuštění dostávám hlášku "Vstupní řetězec nemá správný formát."

Řádek 34:                     'při prázdné hodnotě změnit pro domácnost
Řádek 35:                     If com.ExecuteScalar().ToString() = "" Then
'''Řádek 36:                         CType(FormView_Profile.Controls("lbl_01"), Label).Text = "Titul"'''

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

Již jsem na to přišel a funguje to ...

CType(FormView_Profile.FindControl("lbl_01"), Label).Text = "Domácnost"

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

Ještě se vyskytl problém a nevím si s ním rady:

Přes níže uvedený kód dosazuji vlastnost Text prvku umístěného ve FormView v sekci <ItemTemplate> ...

lbl_Name.Text = CType(FormView_Profile.FindControl("lbl_CompanyName"), Label).Text

snažím se o totéž i u prvku TextBox umístěném ve stejném FormView, jenže v sekci <EditItemTemplate>, ale bohužel neśpěšně !!!

lbl_Name.Text = CType(FormView_Profile.FindControl("txt_CompanyName"), TextBox).Text

Můžete prosím pomoci ???

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

Jde o to, že FindControl přistupuje pouze ke komponentám, které jsou "instanciovány ve stránce". Je nutné si uvědomit, že ItemTemplate a EditItemTemplate jsou jen šablony a nutně to neznamená, že komponenty v nich definované jsou automaticky ve stránce. Pokud máte FormView v režimu pro čtení (ReadOnly), tak komponenty z EditItemTemplate ve stránce nejsou a tudíž je FormView nenajde. Můžete s těmito komponentami pracovat až ve chvíli, kdy je FormView v režimu Edit, to ale už zase nemáte ItemTemplate.

Podle mě se snažíte udělat něco, co se ve skutečnosti dělá úplně jinak a jednodušeji. Zkuste vysvětlit, co přesně potřebujete, co má stránka dělat.

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

Děkuji, již jsem také zjistil, že nelze přistupovat ke komponentám, které nejsou zrovno na stránce.

Jednalo se o to, že mám stránku pro editaci uživatele a v záhlaví se mi zobrazuje v Labelu hodnota uložená v databázi ve sloupci "CompanyName". Já jsem potřeboval, aby když se uživatel přepne do režimu editace a změní hodnotu "CompanyName", aby se mi tato hodnota změnila i v Labelu umístěném v záhlaví. Chybu jsem dělal v tom, že jsem toto přiřazení měl v události Page_Load a tam nešlo přistupovat ke komponentě umístěné v sekci EditItemTemplate. Stačilo toto přiřazení dát do jiné události nastávající až na stránce editace a bylo po problému.

Přesto díky za vysvětlení.

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