iz baze u ListView

iz baze u ListView

offline
  • Pridružio: 18 Apr 2003
  • Poruke: 8134
  • Gde živiš: U kesici gumenih bombona...

    Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load         openConn()         Dim strSQLSpisakCD As String         strSQLSpisakCD = "SELECT * FROM spisak_cdova,grupa WHERE spisak_cdova.grupa=grupa.br_grupe ORDER BY br_cda DESC;"         adoRS = adoConn.Execute(strSQLSpisakCD)         Do Until adoRS.EOF             lstSpisakCD.Items.Add(adoRS("br_cda"))             lstSpisakCD.Items(0).SubItems.Add(adoRS("naziv_cda"))             lstSpisakCD.Items(1).SubItems.Add(adoRS("ime_grupe"))             adoRS.MoveNext()         Loop         cl.cc()     End Sub


ovaj code je radjen u Visual Basic.NET-u i pravi sledecu gresku:



An unhandled exception of type 'System.InvalidCastException' occurred in CD Base v1.001 b.exe

Additional information: Specified cast is not valid.




ako stavim
lstSpisakCD.Items.Add(CStr(adoRS("br_cda")))
kaze da ne moze da konvertuje u String i nikako ne mogu da u ListView procitam iz baze i upisem u ListView...

openConn() je procedura koja otvara konekciju prema bazi, a
cl.cc() je klasa koja sadrzi proceduru cc() koja zatvara konekciju prema bazi...[/code]



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 16 Jun 2003
  • Poruke: 240

Ok idemo iz pocetka:

1. Stavis ListView na formu i dodas 3 Columns-a (broj CD-a, Naziv CD-a, Ime grupe)

2. View podesis na Details

3. I onda bi ja tvoju kodu
lstSpisakCD.Items.Add(adoRS("br_cda")) lstSpisakCD.Items(0).SubItems.Add(adoRS("naziv_cda")) lstSpisakCD.Items(1).SubItems.Add(adoRS("ime_grupe"))

promenio u

  Dim item1 As New ListViewItem(adoRS("br_cda"))   item1.SubItems.Add(adoRS("naziv_cda"))   item1.SubItems.Add(adoRS("ime_grupe"))   lstSpisakCD.Items.Add(item1)

p.s. Ako ti adoRS("br_cda") vraca Integer onda ga moras pretvoriti u string
  item1.SubItems.Add( CStr( adoRS("naziv_cda") ) )

To bi trebalo da ti pomogne.

Pozdrav.



offline
  • Pridružio: 18 Apr 2003
  • Poruke: 8134
  • Gde živiš: U kesici gumenih bombona...

a zasto se mora da pretvara u string ako adoRS vraca u int?!

offline
  • Pridružio: 16 Jun 2003
  • Poruke: 240

U zgornjem postu je moja greska

Ako adoRS("br_cda") vraca string
Dim item1 As New ListViewItem( DirectCast(adoRS("br_cda"),string) )  item1.SubItems.Add( DirectCast(adoRS("naziv_cda"),string) ) item1.SubItems.Add( DirectCast(adoRS("ime_grupe"),string) ) lstSpisakCD.Items.Add(item1)


Ako adoRS("br_cda") vraca int
Dim item1 As New ListViewItem( CStr( DirectCast(adoRS("br_cda"),Integer) ) ) item1.SubItems.Add( DirectCast(adoRS("naziv_cda"),string) ) item1.SubItems.Add( DirectCast(adoRS("ime_grupe"),string) ) lstSpisakCD.Items.Add(item1)

Sigurno se pitas sta je sad to DirectCast(varijabla,Tip) ??

C++ programeri bi napisali

double x = 2.3; int y = (int)x;

P.S. Post cu da zavrsim malo kasnije sad moram da idem u grad.

offline
  • Pridružio: 16 Jun 2003
  • Poruke: 240

Ok eto mene nazad.

TypeCast se u .NET-u upotrebljava mnogo vise nego pre. Omogucava ti da promenis tip varijable. Naravno tip koji menjas i tip u kojega menjas moraju da budu u nekoj povezavi oce-...-sin.

npr. Imas klasu Object koja je otac ostalim klasama.

Object -> klasa1 -> klasa2

Klasa2 ima public varijablu x.

Ako imas varijablu tipa Object onda ne mozes da dostupas do X.
Nacin sa kojim to resis je TypeCasting.

VB.NET
Dim Varijabla1 as Object vrednost = DirectCast(Varijabla1, Klasa2).x

C#/C++
Object Varijabla1; vrednost = (Klasa2)Varijabla1.x;


Pitanje2:

Konstruktor ListViewItem-a ocekuje varijablu tipa string koju ce da posreduje kao ime reda (ime Item-a).

ListView je sastavljen iz Item-ov koji imaju samo jedno ime, ali mogu da imaju vise podimena.
Podimena su vidljiva samo kada stavis vrednost VIEW na Details

Kada ti baza vrati tip Integer onda moras da ga Cast-as u string da bi ga dao kao parametar u konstruktor ListViewItem.
Isto vazi i za ListViewItem.SubItem.Add()

Ako hoces da proveris kakav tip koji konstruktor ocekuje samo potrazis tu klasu u Helpu i vidis.

To bi bilo to, Pozdrav.

Ko je trenutno na forumu
 

Ukupno su 864 korisnika na forumu :: 16 registrovanih, 2 sakrivenih i 846 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: bobomicek, Bubimir, ILGromovnik, indja, koom0001, ladro, Markovic, Milija.00, nenad81, Neutral-M, procesor, raketaš, Trpe Grozni, vargas, vathra, Volkhov-M