Tablica na osnovi popunjenih polja sloga

Konkretnije:
Želim da iznajmljivači mogu sami upisivati i mijenjati cijene svojih smještajnih jedinica. Napravio sam tablicu preko koje upisuju naziv svojih smještajnih jedinica, određuju termine i cijene za te termine. Sve se to upisuje u tablicu baze podataka pod njihovim ID.

Sad vas molim za prijedlog na koji način da ispisujem tablicu s onoliko stupaca koliko je popunjeno termina odnosno onoliko redaka koliko je ispunjeno smještajnih jedinica. Već sam pokušao to pomoću For Next petlji redaka i stupaca pomoću kojih bi se oni ispisivali dok ne naiđu na praznu ćeliju baze podataka, ali ne znam kako se uzima vrijednost iz sloga baze podataka prema indexu, a ne imenu polja. Nešto kao što je u običnom ASP-u rekodrset oRs(1).

Ne znam da li sam bio jasan ali dajte ideju pa ćemo razrađivat

hvala

Upravo sam natikpao tri paragrafa texta, ali ovaj glupi webmajstori.net forum server je ponovo javio Server full, i sve otislo u vjetar!! grrr.

Da skratim, pogledaj tutorijale ovjde, jer bi objasnjenje uzelo previse mjesta i vremena:;

Vjerujem da si si dao truda i da bi tri paragrafa bili prava smjernica za moje rješenje, kao i uvjek. Hvala

Ali ipak bi te molio da me barem usmjeriš koje tutorijale bi trebalo pregledati…

Pogledaj tutorijale koji pokazuju upotrebu sljedecih kontrola:
GridView
FormView
xDataSoruce (kao sto su SqlDataSource, ObjectDataSource)

ali sada malo citam tvoje pitanje, pa me zanima sto ce biti ispisano u x osi tablice; datumi, periodi …? Jerbo, onda ce postupak ici ovim redom, ugrubo:

  • dohvatiti sve rezervacije u DataTable objekt (ili kolekciju entiteta - objekta)
  • dohvatiti sve kapacitete u drugi DataTable
  • u treci DataTable posloziti podatke za UI tablicku - redovi sadrze popunjenost određenog kapaciteta
  • bindat taj treci DataTable na neku UI kontrolu, GridView, Repeater, DataList, …

Takodjer, opisi malo kako ce izgledati screen za unos podataka?

Kako dohvacas podatke iz baze? Neke metode:

  • SqlCommand i SqlDataReader, ides redak po redak sa readerom
  • DataTable ili DataSet punis sa TableAdapterom
  • Stronlgy Typed Data Sets, znaci koristis Visual Studio designer za kreiranje DataTableova i TableAdaptera
  • neki ORM poput Linq2SQL, EF

U pitanju je cjenik koji bi u zaglavlju tablice (prvom retku) trebao prikazivati vremenski period za koji važe cijene (npr.: od:01.07. do 01.09.), a u prvom stupcu naziv smještajne jedinice (npr.: Apartman 1). Sjecišta bi bile cijene.

Iznajmljivači bi smostalno trebali unositi sve navedeno: termin koji im paše, naziv smještajne jedinice i cijene.

Napravio sam klasu Cjenik u kojoj imam svojstva svega gore navedenog pod nazivom: Naziv1, Naziv2… Termin1, Termin2…, cijena11, cijena12… cijena95…
Naime tablica za unos ima mogućnost unosa max. 5 termina za max. 11 smještajnih jedinica

Preko te tablice za unos punim bazu podataka, tablicu “Cjenik”. Sve sam strpao u tu jednu tablicu, pa su iznajmljivaču koji npr. ima jedan apartman i unesao je tri termina popunjena samo polja: Naziv1, Termin1,Termin2,Termin3, Cijena11, Cijena21 i Cijena31. Sve ostale ćelije u bazi, u tbl Cjenik za taj ID su prazne ("").

E sad. Sve je u redu s upisivanjem odnosno promjenom navedenih vrijednosti, ali treba to potencijalnom turistu prikazati kao tablicu koja ima točno onoliko redaka koliko ima ispunjenih smještajnih jedinica i točno onoliko stupaca koliko ima ispunjenih termina (naravno +1).

Sad nastupate vi IT bauštelci…

Moj pokušaj je bio slijedeći:
Dohvatio sam sve podatke u objekt “p” i saznao broj potrebnih redaka i stupaca ovako:
Dim p As cjenik = cjenik.CjenikOdID(idIznajmljivaca)
Cache(“detalji”) = p
stupac = 0
redak = 0
If p.TerminOd1 <> “” Then stupac = 1
If p.TerminOd2 <> “” Then stupac = 2
If p.TerminOd3 <> “” Then stupac = 3
If p.TerminOd4 <> “” Then stupac = 4
If p.TerminOd5 <> “” Then stupac = 5
If p.Naziv1 <> “” Then redak = 1
If p.Naziv2 <> “” Then redak = 2
If p.Naziv3 <> “” Then redak = 3
If p.Naziv4 <> “” Then redak = 4
If p.Naziv5 <> “” Then redak = 5
If p.Naziv6 <> “” Then redak = 6
If p.Naziv7 <> “” Then redak = 7
If p.Naziv8 <> “” Then redak = 8
If p.Naziv9 <> “” Then redak = 9
If p.Naziv10 <> “” Then redak = 10
If p.Naziv11 <> “” Then redak = 11

Namjera mi je bila ispisivati tablicu ispisujući string tablice u kodu kroz dvije For Next petlje, ali ne znam ispisati ćeliju prema njenom indexu (rednom broju ćelije).

To je trebalo izgledati otprilike ovako:

strTablica = "<table>"
' najprije zaglavlje
       strTablica &= "<tr><td></td>"
        For j=0 to stupac-1
              strTablica &= "<td>" & p.Termin(stupac+br polja od kojeg počinju Termini) & "</td>"
        Next
'sad ono ispod
For i = 0 to redak-1
  strTablica &= "<tr><td>" & p.Naziv(redak+br polja od kojeg počinju Nazivi) & "</td>"
    For j=0 to stupac-1
      strTablica &= "<td>" & p.Cijena(stupac*11+stupac+br polja od kojeg počinju Nazivi) & "</td>"
    Next j
  strTablica &= "</tr>"
Next i
strTablica &= "</table>"

p.Termin(stupac+br polja od kojeg počinju Termini) - je samo ideja jer se u čistom asp to moze, iz rekordseta izvuc ćeliju prema rednom broju.

Dakle kad bi mi netko rekao kako se dograbi broj polja imao bi riješenu stvar.

Zar ne bi ovo manje opteretilo stranicu od GridView

Rado ću prihvatiti i nova rješenja jer Kalendar popunjenosti koji je slijedeći na redu zasigurno neće ovako ići :slight_smile:

Hvala

Riješio sam tako što sam napunio nizove Naziv(12), Termin(6), TerminLM(4), Cijena(56), CijenaLM(34) stringovima i onda ih kroz one petlje pozivao indexima

Sve jedno hvala.