Diskuze: Web User Control

C# .NET .NET (C# a Visual Basic) Web User Control American English version English version

Avatar
keke1
Člen
Avatar
keke1:

Ahojte,

zas se na vás obracím s problémem, který řeším. Vezmu to kapánek obšírněji, ať vás co nejvíce dostanu do obrazu.
Tvořím aplikaci v ASP.NET pod C# a týká se skladů.
Na jedné stránce uživatel definuje nové zboží a k němu vlastnosti zboží.
Vlastnosti může libovolně přidávat a jedno zboží může mít více vlastností.
Na tyto vlastnosti jsem vytvořil Web User Control, skládající se ze dvou checkBoxů (jeden nese název vlastnosti a druhý určuje, zda je vlastnost povolená, nebo zakázaná... např. když má nějaké chemikálie, měl by si zakázat například potraviny, ať si k potravinám necpe chemikálii atd..)
Vygenerovat na stránku patřičný počet Web User Controlů s názvy vlastností není problém, ale už nedokážu zjistit, který z CheckBoxů zaškrtnul. Neumíte někdo poradit jak na to? Strejda Google zatím mlčí, teta Wiki jakbysmet. Knížky co mám tohle moc neřeší, spíš jen okrajově. Prosím o radu, nebo o nasměrování k informacím jak se tohle řeší.
Předem moc díky!

 
Odpovědět 6.8.2013 9:42
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na keke1
David Čápka:

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.

Nahoru Odpovědět 6.8.2013 10:34
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
keke1
Člen
Avatar
Odpovídá na David Čápka
keke1:

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 :-)

 
Nahoru Odpovědět 6.8.2013 10:50
Avatar
Odpovídá na keke1
Luboš Běhounek (Satik):

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.

Nahoru Odpovědět 6.8.2013 11:07
:)
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na keke1
Petr Nymsa:

Tak jak říká Satik + můžeš každému CheckBoxu dát nějaké ID přes Tag pro lepší rozlišení

Nahoru Odpovědět 6.8.2013 11:14
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Petr Nymsa
Luboš Běhounek (Satik):

tag ID je prave nazev toho controlu :)

Nahoru Odpovědět 6.8.2013 11:18
:)
Avatar
keke1
Člen
Avatar
keke1:

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:

http://www.itnetwork.cz/dev-lighter/162

 
Nahoru Odpovědět 6.8.2013 11:18
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Petr Nymsa:

No to jsi nenapsal a já to nějak nevydedukoval :P Myslel jsem uložit si string,int prostě něco unikátního do vlastnosti Tag :)

Nahoru Odpovědět 6.8.2013 11:20
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
keke1
Člen
Avatar
keke1:

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.Control­s.Add(new System.Web.UI­.LiteralControl(po­kus.Text));

Tohle byl jen takový pokus, ale mám už myšlenku jak to vyřešit :-)
Ještě jednou moc díky :-)

 
Nahoru Odpovědět 6.8.2013 11:30
Avatar
Odpovídá na Petr Nymsa
Luboš Běhounek (Satik):

Jo aha, ty jsi nemyslel tag, ale opravdu přímo Tag :D
To je zbytečné, stačí jen pohlídat název controlu, ten také můžeš přiřadit :)

Nahoru Odpovědět 6.8.2013 11:36
:)
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
Petr Nymsa:

Asi je to zbytečný no, ale radši vždy porovnávám číselný ID než řetězce, ani nevím proč :D

Nahoru Odpovědět 6.8.2013 11:37
Pokrok nezastavíš, neusni a jdi s ním vpřed
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.