Proměná, mezi dvěma událostmi – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Proměná, mezi dvěma událostmi – .NET – Fórum – Programujte.comProměná, mezi dvěma událostmi – .NET – Fórum – Programujte.com

 

Petr Sýkora
~ Anonymní uživatel
16 příspěvků
6. 12. 2008   #1
-
0
-

Nazdarek. Mám v jedné události cyklus foreach, který mi vytvoří proměnou a přídá ji hodnotu. Potřebloval bych tu proměnou mít i v jiné události??
Můžete mi někdo poradit jak na to?

Nahlásit jako SPAM
IP: 85.207.101.–
KIIV
~ Moderátor
+43
God of flame
6. 12. 2008   #2
-
0
-

asi ji dat jako globalni nebo si nejak predat adresu kde je... akorat pokud pracujes s vlaknama tak by to asi chtelo i semafory...

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Petr Sýkora
~ Anonymní uživatel
16 příspěvků
6. 12. 2008   #3
-
0
-

Mám kód, který zindexuje obsah složky New a vytvoří potřebné komponenty. mezi nimi i LinkButton. A ten, když se stiskne má smazat nějakou složku ve složce New.

Mám tento kód:

foreach (DirectoryInfo DirectoryName in new DirectoryInfo(Server.MapPath("~/New/")).GetDirectories())

{
TableRow tr = new TableRow();
Table001.Controls.Add(tr);

TableCell td1 = new TableCell();
td1.CssClass = "Table002_001";
tr.Controls.Add(td1);

TableCell td2 = new TableCell();
td2.CssClass = "Table002_002";
tr.Controls.Add(td2);

Label Name = new Label();
Name.Text = DirectoryName.Name;
td1.Controls.Add(Name);

LinkButton Delete = new LinkButton();
Delete.Text = "Delete";
//
// něco, co zařídí smazání adresáře po stisknutí
//
td2.Controls.Add(Delete);
}

Nevím ale, jak po kliknutí smazat právě tu složku, ke které tento linkButton patří

Nahlásit jako SPAM
IP: 85.207.101.–
Petr Sýkora
~ Anonymní uživatel
16 příspěvků
6. 12. 2008   #4
-
0
-

A pokud by to šlo, tak to dělat přímo v té události a nevytvářet novou...

Nahlásit jako SPAM
IP: 85.207.101.–
Petr Sýkora
~ Anonymní uživatel
16 příspěvků
6. 12. 2008   #5
-
0
-

Tak mám globální proměnou string DirectoryName_;
a v tom foreach mám:


string DirectoryName_ = DirectoryName.Name;

a dále mám jinou událost a v ní:

string DirectoryName = (Server.MapPath("~/Reference/" + DirectoryName_));
System.IO.Directory.Delete(DirectoryName);


ale nic to nedělá... Pomozte mi prosím.. D9ky

Nahlásit jako SPAM
IP: 85.207.101.–
forstec0
Návštěvník
6. 12. 2008   #6
-
0
-

Tak prvně musíš při dynamickém vytváření těch controlů říct, která metoda se provede při stisknutí. No a když se u všech těch prvků po stisknutí provede stejná metoda, tak bych to zkusil vyřešit pomocí parametru "sender" té metody. Tam se ti uloží objekt, přes který byl proveden stisk, tak si do toho objektu zkus uložit tu adresu a pak ji nějak po přetypování vytáhnout. Jinak mě zatím nic nenapadá.

Nahlásit jako SPAM
IP: 89.176.141.–
forstec
Petr Sýkora
~ Anonymní uživatel
16 příspěvků
6. 12. 2008   #7
-
0
-

Nějak to nechápu :-D

Vím že se to nemá, ale najde se taky človíček, který mi sem dal kousek kódu? ;-)

Nahlásit jako SPAM
IP: 85.207.101.–
Petr Sýkora
~ Anonymní uživatel
16 příspěvků
6. 12. 2008   #8
-
0
-

A přímo s té události by to nešlo??? a´ nemusím vyvářet novou. už tak jich tam mám hodně

Nahlásit jako SPAM
IP: 85.207.101.–
Japo0
Návštěvník
6. 12. 2008   #9
-
0
-

Pokud se nemýlím, lze to udělat pomocí vlastnosti Tag toho tlačítka, tedy LinkButton.Tag. Této vlastnosti přiřaď jméno složky. Dále ještě v tom foreach cyklu nastav událost btn.Click.

Poté v metodě události, jež se vyvolá po stisku tlačítka Delete, přetypuj parametr sender na typ LinkButton (LinkButton btn = sender as LinkButton) a z vlastnosti btn.Tag se dozvíš jméno složky, kterou chce uživatel smazat.

Pokud tomu nerozumíš, běž radši do nejbližšího knihkupectví a pořiď si knížku o ASP.NET (v některých bývá vysvětlen i programovací jazyk) nebo o C# anebo nastuduj nějaký tutoriál o C# na internetu (zaměř se přitom na část o událostech).

Nahlásit jako SPAM
IP: 90.176.243.–
forstec0
Návštěvník
6. 12. 2008   #10
-
0
-

To Petr Sýkora :



Class MujLinkButton:LinkButton
{
private String adresa;

public MujLinkButton():base()
{
adresa="";
}
public String Adresa
{
get
{
return this.adresa;
}
set
{
this.adresa=value
}

}

v tom foreach cyklu:

MujLinkButton Delete = new MujLinkButton();
Delete.Text = "Delete";
Delete.Adresa="nejakaAdresaNaDiskuNeboTakNeco";
Delete.Click+=new EventHandler(mazaciMetoda);//mazaciMetoda neco smaze


pak nekde jinde:

public void mazaciMetoda(object sender, EventArgs e)
{
MujLinkButton mujLB=(MujLinkButton)sender;
String adresa=mujLB.Adresa;

//kod, ktery smaze soubor na danne adrese
}



Nevim, jestli je to funkcni, nezkousel jsem, ale i kdyby ne, tak snad si to doopravis.

Nahlásit jako SPAM
IP: 89.176.141.–
forstec
forstec0
Návštěvník
6. 12. 2008   #11
-
0
-

To forstec : Aha, ono to má Tag, toho jsem si nevšiml, takže tam odpadá vytváření své vlastní třídy.

Nahlásit jako SPAM
IP: 89.176.141.–
forstec
Petr Sýkora
~ Anonymní uživatel
16 příspěvků
6. 12. 2008   #12
-
0
-

To je všechno moc dlouhý.... Něco kratšího. Takových věc už tam mám asi 10 a už jsem v kódu na 1866 řádku...

Nahlásit jako SPAM
IP: 85.207.101.–
Petr Sýkora
~ Anonymní uživatel
16 příspěvků
6. 12. 2008   #13
-
0
-

To je všechno moc dlouhý.... Něco kratšího. Takových věc už tam mám asi 10 a už jsem v kódu na 1866 řádku...

Nahlásit jako SPAM
IP: 85.207.101.–
Japo0
Návštěvník
6. 12. 2008   #14
-
0
-

A hodinky s vodotryskem nechceš? :-) Jak už psal forstec, můžeš vynechat definici třídy Class MujLinkButton:LinkButton, ale pak místo Delete.Adresa a mujLB.Adresa bude Delete.Tag (mujLB.Tag).

Nahlásit jako SPAM
IP: 90.176.243.–
Petr Sýkora
~ Anonymní uživatel
16 příspěvků
6. 12. 2008   #15
-
0
-

Error:

System.Web.UI.WebControls.LinkButton neobsahuje definici Tag

Nahlásit jako SPAM
IP: 85.207.101.–
Japo0
Návštěvník
6. 12. 2008   #16
-
0
-

Aha, tak jsem si to spletl s něčím jiným. Asi tedy budeš muset použít tu odvozenou třídu MujLinkButton, nebo najít jinou, podobnou vlastnost, která ti umožní do tlačítka uložit nějakou hodnotu.

Nahlásit jako SPAM
IP: 90.176.243.–
Petr Sýkora
~ Anonymní uživatel
16 příspěvků
6. 12. 2008   #17
-
0
-

Mohly by jsmte mi prosím ten kód s tou třídou trochu víc popsat??? co který kód dělá, ...
Moc dík

Nahlásit jako SPAM
IP: 85.207.101.–
Petr Sýkora
~ Anonymní uživatel
16 příspěvků
6. 12. 2008   #18
-
0
-

Jak se dá smazat složka, která není prázdná??

Nahlásit jako SPAM
IP: 85.207.101.–
forstec0
Návštěvník
6. 12. 2008   #19
-
0
-

To Petr Sýkora : No jestli programuješ ve Visual Studiu, tak se koukni do Object Browseru a najdi si tu třídu, která má na starosti práci se složkami, nebo si to vygoogli. Jinak, když nechápeš ten kód třídy, co jsem psal, tak asi bude lepší, když se nejdříve mrkneš na nějaké učební materiály, je to totiž základ, bez kterého se nikam nepohneš...

Nahlásit jako SPAM
IP: 89.176.141.–
forstec
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 72 hostů

Podobná vlákna

C# primka mezi dvema body — založil Kryspin

Rozdíl mezi dvěma příkazy — založil Montezo

Rozdíl mezi dvěma zápisy — založil Tomáš

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý