Mephi
5. 3. 2010 20:55:51
Príspevkov:
125
Článkov:
0
Blogy:
0
Správičiek:
0
Body:
625
Najaktívnejší č.:
27
|
Pridanie treenode z iného okna
|
Zdravim,
chcel by som si napisat malu aplikaciu, ktora obsahuje jeden treeview a jeden gombik na otvorenie dalsieho okna. V tom dalsom okne by sa nachadzali 2 textboxy:
Meno:
Adresa:
Meno by bolo text, co sa zobrazi pre dany treenode v treeview, a Adresa by bola lubovolny atribut ktory sa v treeview nezobrazi.
Po zadani tychto udajov a po kliknuti na OK, by sa malo zobrazit novy treenode v treeview.
Rozmyslal som o pouziti datasetu, ktory sa po ukonceni programu ulozi do xml. Pri spustani programu by sa ten xml pouzil pre nacitanie udajov do datasetu, z coho by sa vytvorila struktura treeview.
Problem ale je, ze neviem ako by sa to malo zrealizovat. Uvital by som najeka ukázky kodu.
Za pomoc vopred dakujem.
|
[Reakcia]
|
T
6. 3. 2010 0:48:30
Príspevkov:
1654
Článkov:
0
Blogy:
42
Správičiek:
162
Body:
13610
Najaktívnejší č.:
3
|
RE: Pridanie treenode z iného okna
|
@memphi: listview sa na to urcite hodi viac, ale ked chces...
http://blog.aspnet.sk/blogs/tomas/TreeViewDemo.zip
Tomáš Zeman, MCSD.NET
|
[Reakcia]
|
Mephi
8. 3. 2010 14:42:57
Príspevkov:
125
Článkov:
0
Blogy:
0
Správičiek:
0
Body:
625
Najaktívnejší č.:
27
|
RE: Pridanie treenode z iného okna
|
Dakujem za ukazku,
skusal som ju, ale u mna ta serializacia nejak nefunguje. Ako nedostavam ziadnu chybu, ale subor sa mi nevytvori. Dalej by som sa chcel spytat, ako si mozem overit, ci dany treenode obsahuje vsetky atributy ktore mam zadefinovane ? Totiz ked pridam treenode, tak to robim takto: private void btn_AddServer_Click(object sender, EventArgs e)
 ...{
Server newServer = new Server();
using (EWAddServer addServerDialog = new EWAddServer())
 ...{
addServerDialog.BindTo(newServer);
if (addServerDialog.ShowDialog(this) == DialogResult.OK)
 ...{
_serverBook.Servers.Add(newServer);
tv_Servers.Nodes.Add(newServer.ServerName);
}
}
} T.j. mam ta spominane iba ServerName, a aj to sa mi v treeview zobrazi. Ako si mozem overit ci dany treenode obsahuje aj atribut ServerAddress ? Este raz spominam, serializácia u mna nefunguje, cize vytvoreny subor na to nemozem pouzit.
|
[Reakcia]
|
T
8. 3. 2010 18:06:39
Príspevkov:
1654
Článkov:
0
Blogy:
42
Správičiek:
162
Body:
13610
Najaktívnejší č.:
3
|
RE: Pridanie treenode z iného okna
|
@mephi:
Subor by Ti mal vytvorit, ze zatvaras aplikaciu a das yes. Subor Ti vytvara v bin foldri.
neviem, preco by Ti nefungovala Xml serializacia.
tv_Servers.Nodes.Add(newServer.ServerName);
neurobi nic ine, len prida novy TreeNode do stromu a nastavi mu Text, je to jeden z "magic" oveloadov Add metody.
"ako si mozem overit ci dany treenode obsahuje aj atribut ServerAddress ?"
nerozumiem celkom otazke, ale ...
var myNode= tv_Servers.Nodes.Add(newServer.ServerName);
myNode.Tag= newServer;
a potom mas cele info o node dostupne aj cez tag atribut v kazdom node, staci pretypovat
var server= (Server) myNode.Tag
Tomáš Zeman, MCSD.NET
|
[Reakcia]
|
Mephi
9. 3. 2010 12:39:11
Príspevkov:
125
Článkov:
0
Blogy:
0
Správičiek:
0
Body:
625
Najaktívnejší č.:
27
|
RE: Pridanie treenode z iného okna
|
A ked som si pridal Remove gombik pre vymazanie vybraneho uzla v treeview, ako to spravim aby sa vymazal aj dany zaznam z List ? private void btn_RemoveServer_Click(object sender, System.EventArgs e)
 ...{
tv_Servers.SelectedNode.Remove();
tv_Servers.Update();
} tuto je metoda pre pridanie uzla a zaznamu: private void addServer_Click(object sender, EventArgs e)
 ...{
Server newServer = new Server();
using (EWaddServer addServerDialog = new EWaddServer())
 ...{
addServerDialog.BindTo(newServer);
if (addServerDialog.ShowDialog(this) == DialogResult.OK)
 ...{
if (tv_Servers.Nodes.Count == 0)
 ...{
_serverBook = new ServerBook();
_serverBook.Servers.Add(newServer);
tv_Servers.Nodes.Add(newServer.ServerName);
}
else
 ...{
_serverBook.Servers.Add(newServer);
tv_Servers.Nodes.Add(newServer.ServerName);
}
}
}
tv_Servers.ExpandAll();
}
|
[Reakcia]
|
T
9. 3. 2010 18:05:44
Príspevkov:
1654
Článkov:
0
Blogy:
42
Správičiek:
162
Body:
13610
Najaktívnejší č.:
3
|
RE: Pridanie treenode z iného okna
|
odpamatas si referenciu na node cez .Tag property _serverBook = new ServerBook();
_serverBook.Servers.Add(newServer);
var node= tv_Servers.Nodes.Add(newServer.ServerName);
node.Tag= newServer; Remove var serverToRemove= (???) tv_Servers.SelectedNode.Tag;
_serverBook.Servers.Remove(serverToRemove); Inak uz to zacina byt celkom slusny horor...ked to este trochu posunies, posli to a refactornem Ti to.
Tomáš Zeman, MCSD.NET
|
[Reakcia]
|
Mephi
10. 3. 2010 0:23:01
Príspevkov:
125
Článkov:
0
Blogy:
0
Správičiek:
0
Body:
625
Najaktívnejší č.:
27
|
RE: Pridanie treenode z iného okna
|
Ja Ti to rad poslem, lenze to je Visual Studio Isolated Shell aplikacia, a toto nie je samostatne fungujuci windows form, ale vstavany user control. Ale ak chces, poslem ti to cez mail alebo nejakym inym sposobom.
Inac dakujem, uz mi to asi fici v pohode :)
|
[Reakcia]
|
T
10. 3. 2010 1:17:12
Príspevkov:
1654
Článkov:
0
Blogy:
42
Správičiek:
162
Body:
13610
Najaktívnejší č.:
3
|
RE: Pridanie treenode z iného okna
|
@Mephi:v pohode, tak kaslime na to ;-)
Tomáš Zeman, MCSD.NET
|
[Reakcia]
|
Mephi
11. 3. 2010 11:36:38
Príspevkov:
125
Článkov:
0
Blogy:
0
Správičiek:
0
Body:
625
Najaktívnejší č.:
27
|
RE: Pridanie treenode z iného okna
|
Este by som mal jednu otazku, ako by sa spravil dalsie okno na editovanie uz zadanych udajov ? Myslim ked si vyberem treenode, a kliknem na tlacitko Edit, tak nech sa mi zobrazi podobne okno ako pri pridani noveho servera, s taky rozdielom, ze textboxy uz budu obsahovat udaje daneho treenode (tzn. udaje servera).
|
[Reakcia]
|
T
11. 3. 2010 15:57:45
Príspevkov:
1654
Článkov:
0
Blogy:
42
Správičiek:
162
Body:
13610
Najaktívnejší č.:
3
|
RE: Pridanie treenode z iného okna
|
@Mephi: pouzil by som to iste okno...len by som to nabindoval na (???) tv_Servers.SelectedNode.Tag
Tomáš Zeman, MCSD.NET
|
[Reakcia]
|
Mephi
11. 3. 2010 17:51:12
Príspevkov:
125
Článkov:
0
Blogy:
0
Správičiek:
0
Body:
625
Najaktívnejší č.:
27
|
RE: Pridanie treenode z iného okna
|
Dakujem :)
|
[Reakcia]
|