Avatar billede mskjoldp Novice
30. april 2005 - 19:31 Der er 13 kommentarer og
1 løsning

textarea hvor rows defineres af indholdet på et db felt

Hey E

IIS 5.0/ASP/JAvaScript/IE

Hvordan kan jeg skabe et textarea, hvor rows tilsvarer hvor meget indhold der er hæntet fra en db?

Oprindelig:
<textarea cols="80" rows="5" class="tdbgcolor"><%=varAnm%></textarea>

Ønskelig:
<textarea cols="80" rows="<%=TILSVARER INDHOLDET AF DB FELTET:varAnm%>" class="tdbgcolor"><%=varAnm%></textarea>
Avatar billede olebole Juniormester
30. april 2005 - 20:24 #1
<ole>

Det kan du ikke umiddelbart. Så skal du først hælde indholdet ned i f.eks. et skjult div, der er stylet nøjagtigt som dit textarea - måle div'ets højde - sætte dit textarea til samme højde - og hælde indholdet ned i textarea'et.

Scrollbaren skal naturligvis også styles ind i div'et, så det opfører sig nøjagtig som textarea'et ... det er noget bøvl, men kan sikkert laves, så det virker forholdsvis okay i forskellige browsere(?)  :)

/mvh
</bole>
Avatar billede elskermad.dk Nybegynder
30. april 2005 - 20:29 #2
ved godt det ikke er mit spm, men hvordan måler du højden af en div hvis indhold er dynamisk olebole?
Avatar billede mskjoldp Novice
30. april 2005 - 20:33 #3
thx ole, hmmm det virker lidt besværligt. Kan det gøre i en løkke?

ala:
        Do While Not rs.EOF
        varStatus = rs("MOC_status")
        varStelnr = rs("MOC_stelnr")
        varAnm = rs("S_V_NT_bem") %>
                <tr bordercolor="#000000">
                    <td valign="top" align="right"><font style="background-color:#<%=varStatus%>;"><%=varStelnr%></font></td><td><%If varAnm <> "" Then%><textarea cols="80" rows="5" class="tdbgcolor"><%=varAnm%></textarea><%End if%></td>
                </tr>
    <%    rs.MoveNext
        Loop %>
Avatar billede busschou Praktikant
01. maj 2005 - 00:38 #4
Hvis du nu altid vil have 80cols og kun variere rækker efter det. Så kunne du cirka regne med 80cols svarer til 80bogstaver.
Antallet af rows bliver så lig længden af indholdet fra feltet i databasen divideret med 80 og rundet op.
Så vidt jeg kan se har ASP i VBscript kun en Round funktion som runder spøjst af. Runder op hvis det bliver lige og ned hvis det bliver ulige. For ikke gøre for meget ud af det så tjekker jeg herunder ikke om tallet er lige eller ulige. Men lægger blot en til. Hvis du ønsker det "perfekt" så skal der tjekkes for det også
----
Do While Not rs.EOF
varStatus = rs("MOC_status")
varStelnr = rs("MOC_stelnr")
varAnm = rs("S_V_NT_bem")
varRows = Round(Len(varAnm)/80)%>
<tr bordercolor="#000000">
  <td valign="top" align="right">
  <font style="background-color:#<%=varStatus%>;"><%=varStelnr%></font>
  </td>
  <td><%If varAnm <> "" Then%><textarea cols="80" rows="<%=varRows%>" class="tdbgcolor"><%=varAnm%></textarea><%End if%></td>
</tr>
<%
rs.MoveNext
Loop %>
Avatar billede busschou Praktikant
01. maj 2005 - 00:39 #5
og så lagde jeg ikke en til som sagt..tsk tsk
----
Do While Not rs.EOF
varStatus = rs("MOC_status")
varStelnr = rs("MOC_stelnr")
varAnm = rs("S_V_NT_bem")
varRows = Round(Len(varAnm)/80)+1%>
<tr bordercolor="#000000">
  <td valign="top" align="right">
  <font style="background-color:#<%=varStatus%>;"><%=varStelnr%></font>
  </td>
  <td><%If varAnm <> "" Then%><textarea cols="80" rows="<%=varRows%>" class="tdbgcolor"><%=varAnm%></textarea><%End if%></td>
</tr>
<%
rs.MoveNext
Loop %>
Avatar billede mskjoldp Novice
05. maj 2005 - 16:20 #6
Hey B

Null er brugt ugyldigt: 'Round'

i linjen med:
varRows = Round(Len(varAnm)/80)+1

men ellers ser koden lovende ud ;)
Avatar billede busschou Praktikant
05. maj 2005 - 16:25 #7
Null?...
Det kan vel kun betyde at varAnm er Null ... som betyder at rs("S_V_NT_bem") er Null
Kan den være det i din database?
Avatar billede mskjoldp Novice
05. maj 2005 - 16:46 #8
varAnm = rs("S_V_NT_bem")
                    if IsNull(varAnm) then varAnm = ""
                    varRows = Round(Len(varAnm)/80)+1%>

løser det problem


Men højden af rows er for lille...
Avatar billede mskjoldp Novice
05. maj 2005 - 16:48 #9
Det holder ikke at tælle på 80 tegn.

Der bliver brugt ENTER efter bare 20 tegn, så de 80 tegn pr række holder ikke ...

kan man tælle på ENTER?
Avatar billede busschou Praktikant
05. maj 2005 - 16:52 #10
afhængig af alverdens halløj så bliver enter enten tolket som \r eller \n eller vbCrLf
Avatar billede busschou Praktikant
05. maj 2005 - 16:53 #11
jeg vil umiddelbart tro du kan teste din streng for forekomst af \n
Avatar billede mskjoldp Novice
05. maj 2005 - 21:37 #12
ok, prøver
Avatar billede mskjoldp Novice
11. maj 2005 - 07:38 #13
fik fikset dette sammen der tager højde for ENTER ;)

                    varAnm = rs("S_V_NT_bem")
                    if IsNull(varAnm) then varAnm = ""
                    varVbCrLf = split(varAnm, vbCrLf)
                    varVbCrLf = ubound(varVbCrLf)
                    varRows = Round(Len(varAnm)/200)+varVbCrLf


<textarea cols="80" rows="<%=varRows%>"

busschou svar plz :)
Avatar billede busschou Praktikant
11. maj 2005 - 07:56 #14
oki.. godt det virker :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester