Diskuze: Web User Control
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Nějak jsem to nepochopil - "skládající se ze dvou checkBoxů (jeden nese název vlastnosti a druhý určuje, zda je vlastnost povolená, nebo zakázaná". Na to je snad jeden CheckBox, ne? Nevím, jestli je vhodné si na to dělat User Control.
Ono se to komplikovaně vysvětluje. Jednim si vybírá jestli tu vlastnost dané zboží má a druhým,
že tu vlastnost nesmí použít Např. má zboží "Rohlík" ... tak si vybere vlastnost zboží
např. "Potraviny" a zároveň si vybere vlastnost "Chemikálie" a u ní zvolí
Zakázáno ... program pak vyhledává pozice ve skladu, kam dané zboží
umístit.
a právě že každý si může nadefinovat svoje vlastnosti a může jich být
teoreticky libovolný počet, tak jsem se rozhodl vydat se cestou WUC. Z
databáze si načtu od uživatele vlastnosti jaké nadefinoval a ty mu
zobrazím.
Jo a ještě pro úplnost .... jedno zboží může mít víc vlastností,
ale nikdy nebude mít všechny
A nemůžu automaticky brát, že když danou vlastnost nemá, tak ji má
zakázanou, protože rohlíky můžu dát teoreticky vedle televize, když jsou
skladové prostory pro rohlíky zaplněny, ale NESMÍM ho dát třeba mezi
chemikálie... Snad to dovysvětlení pomohlo
Snad jsem tě pochopil dobře,
každá WebControl má vlastnost Controls ve které najdeš kontroly, které
obsahuje.
Takže stačí iterovat přes .Controls tvého Web User Controlu a hlídat,
jestli je název takový, jaký jsi tomu checkboxu zadal.
Pak si ho už jen přetypuješ na CheckBox a vytáhneš z něj stav.
Stejně tak každá WebControl má vlastnost Parent, přes kterou se dostaneš na rodiče - komponentu, ve které se nacházíš.
Takže pokud máš přímo ve tvém User Controlu Checkbox, tak jeho Parent je ten User Control a User Control má v .Controls ten CheckBox.
Tak jak říká Satik + můžeš každému CheckBoxu dát nějaké ID přes Tag pro lepší rozlišení
Každopádně ikdyž tam dám jen samotný checkBox a dopředu nevím kolik jich bude, protože si je generuje stránka sama, tak nevím jak se odkázat na konkrétní checkBox a zjistit jak má nastavenou vlastnost Checked.
Dávám sem část kódu kterým generuji Vlastnosti Zboží z databáze:
No to jsi nenapsal a já to nějak nevydedukoval Myslel jsem uložit si string,int prostě něco unikátního do vlastnosti Tag
Asi to mám díky za postrčení s nápadem přetypovat na checkBox
Mám to udělané takto
CheckBox pokus = (CheckBox)Panel1.FindControl(ID);
if (pokus.Checked)
Panel1.Controls.Add(new System.Web.UI.LiteralControl(pokus.Text));
Tohle byl jen takový pokus, ale mám už myšlenku jak to vyřešit
Ještě jednou moc díky
Jo aha, ty jsi nemyslel tag, ale opravdu přímo Tag
To je zbytečné, stačí jen pohlídat název controlu, ten také můžeš
přiřadit
Asi je to zbytečný no, ale radši vždy porovnávám číselný ID než řetězce, ani nevím proč
Zobrazeno 11 zpráv z 11.