Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Några små frågor angånde asp.net!

Postades av 2004-05-10 17:39:55 - Magnus Jonsson, i forum asp.net generellt, Tråden har 18 Kommentarer och lästs av 620 personer

Först undrar jag hur man gör den här funktionen på bästa sätt i asp.net, nu är det i vanlig asp.

<code>
If Len(RecSet("epost")) > 0 Then
Response.Write "<IMG SRC='epost.jpg'>"
else
Response.Write "<IMG SRC='ingen_epost.jpg'>"
End if
</code>

Kan man kolla det på nått sätt i code-behind, sedan skriver ut det på sidan?
Vilket är det bästa sättet att lösa det på?

Sedan undrar jag hur datumen ser ut, finns det någon sida där det tar upp hur man ska skriva för att få en annan datumform?


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-10 19:37:24 - Raderat konto

Otestat hjälpfunktion:
<code>
Public Function CheckLen(ByVal objEmail As Object) As String
If IsDbNull(objEmail) Then
Return "<IMG SRC='ingen_epost.jpg'>"
ElseIf objEmail.ToString.Length = 0 Then
Return "<IMG SRC='ingen_epost.jpg'>"
Else
Return "<IMG SRC='epost.jpg'>"
End If
End Function
</code>
Datum kan t.ex. formatteras så här:
<code>
String.Format("{0:d}", DateTime.Now)
</code>


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-10 19:58:29 - Magnus Jonsson

Okej, är ny på det här. Hur skrivs funktionen ut i sidan, är det genom asp:label? Hur definerar man objEmail variabeln så att den hör ihop till databasen?

<code>
objEmail = Container.DataItem("email")
</code>?


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-10 20:12:52 - Raderat konto

Detta kan bero lite på hur du hämtar datat från databasen och till vilken typ av kontroll du skall binda till. En DataGrid t.ex. använder du exempelvis ItemDataBound metoden. Exempel
<code>
Public Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs)
Dim item As ListItemType = e.Item.ItemType
Dim lbl As Label
Dim obj As Object

Select Case item
Case ListItemType.Item, ListItemType.AlternatingItem
obj = e.Item.DataItem("Email")
lbl = CType(e.Item.FindControl("myLabelInGrid"), Label)

If IsDbNull(obj)Then
Return "<IMG SRC='ingen_epost.jpg'>"
ElseIf obj.ToString.Length = 0 Then
Return "<IMG SRC='ingen_epost.jpg'>"
Else
Return "<IMG SRC='epost.jpg'>"
End If
End Select
End Sub
</code>
Nåt sånt...


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-10 20:26:24 - Magnus Jonsson

Okej, hur gör man då i den här koden?

    Function getData() As DataTable

        Dim SQL As string = "SELECT name, email, message FROM tbl_gb ORDER BY Id"
        Dim ds As new DataSet()
        Dim CnStr As string = "Provider=Microsoft.Jet.OleDb.4.0; data source=" & Server.MapPath("../db/db.mdb")
        Dim Cn As new OleDbConnection(CnStr)

        'skapa en OleDbDataAdapter och fyll Datasetet
        Dim ODA As new OleDbDataAdapter(SQL, Cn)
        ODA.Fill(ds, "tbl_gb")

        Return ds.Tables("tbl_gb").Copy

        ODA.Dispose()

    End Function



Blir det så här?

<code>
Function getData() As DataTable

Dim SQL As string = "SELECT name, email, message FROM tbl_gb ORDER BY Id"
Dim ds As new DataSet()
Dim CnStr As string = "Provider=Microsoft.Jet.OleDb.4.0; data source=" & Server.MapPath("../db/db.mdb")
Dim Cn As new OleDbConnection(CnStr)

'skapa en OleDbDataAdapter och fyll Datasetet
Dim ODA As new OleDbDataAdapter(SQL, Cn)
Dim item As ListItemType = e.Item.ItemType
Dim lbl As Label
Dim obj As Object

Select Case item
Case ListItemType.Item, ListItemType.AlternatingItem
obj = e.Item.DataItem("Email")
lbl = CType(e.Item.FindControl("myLabelInGrid"), Label)

If IsDbNull(obj)Then
Return "<IMG SRC='ingen_epost.jpg'>"
ElseIf obj.ToString.Length = 0 Then
Return "<IMG SRC='ingen_epost.jpg'>"
Else
Return "<IMG SRC='epost.jpg'>"
End If
End Select



ODA.Fill(ds, "tbl_gb")

Return ds.Tables("tbl_gb").Copy

ODA.Dispose()

End Function
</code>

Var ska man sätta ut dem, och behöver man ändra något i koden när man använder repeater?


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-10 23:42:14 - Raderat konto

Du får skilja på metod för att hämta data, och metod för att behandla data när du väl har hämtat datat från databasen. Vad skall du göra med din DataTable? Skall du använda den för att fylla en DataGrid kontroll?


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-11 07:37:51 - Magnus Jonsson

Jag har en gästbok, där om man har en email infylld så får man en bild. Ingen email en annan bild.

Det är i en repeater som all data visas i på html-sidan.


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-11 07:56:28 - Raderat konto

Då använder du dig av av Repeaterkontrollens OnItemDataBound event:
<code>
<asp:Repeater id="myRepeater" runat="server" OnItemDataBound="myRepeater_ItemDataBound" ......
</code>
Metoden ser ut så här:
<code>
Public Sub myRepeater_ItemDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs)
Dim item As ListItemType = e.Item.ItemType
Dim lbl As Label
Dim obj As Object

Select Case item
Case ListItemType.Item, ListItemType.AlternatingItem
obj = e.Item.DataItem("Email")
lbl = CType(e.Item.FindControl("myLabelInGrid"), Label)

If IsDbNull(obj)Then
Return "<IMG SRC='ingen_epost.jpg'>"
ElseIf obj.ToString.Length = 0 Then
Return "<IMG SRC='ingen_epost.jpg'>"
Else
Return "<IMG SRC='epost.jpg'>"
End If
End Select
End Sub
</code>


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-11 09:46:22 - Anders Rönngren

Ett annat sätt är att skapa ett dataset och sedan loopa igenom alla rader i det och skriva ut html-kod till en label.

mvh /xaphod


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-11 13:24:38 - Magnus Jonsson

får det här felmeddelandet

"Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: BC30289: Statement cannot appear within a method body. End of method assumed.

Source Error:



Line 49: 'email-kontrollen
Line 50:
Line 51: Public Sub myRepeater_ItemDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs)
Line 52: Dim item As ListItemType = e.Item.ItemType
Line 53: Dim lbl As Label


Source File: c:\inetpub\wwwroot\personlig\gb\gb.VB Line: 51 "


du kan se all kod här: http://www.aspsidan.se/code/?c=923


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-11 14:56:11 - Raderat konto

Problemet här är att man aldrig riktigt vet om folk kör Code behind, inline code, C# eller VB.Net. Eftersom du kör med VB.Net CodeBehind skriver du din kod så här (kan du verkligen döpa din Repeater till 'main'?!?!?!?!?! - döp om) Ojoj -- Jag ser att du dessutom kör ItemDataBound inne i en Function. Det går förstås inte -- flytta ut hela metoden, den skall stå separat::
<code>
Private Sub main_ItemDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs) Handles main.ItemDataBound
Dim item As ListItemType = e.Item.ItemType
Dim lbl As Label
Dim obj As Object

Select Case item
Case ListItemType.Item, ListItemType.AlternatingItem
obj = e.Item.DataItem("Email")
lbl = CType(e.Item.FindControl("myLabelInGrid"), Label)

If IsDbNull(obj)Then
Return "<IMG SRC='ingen_epost.jpg'>"
ElseIf obj.ToString.Length = 0 Then
Return "<IMG SRC='ingen_epost.jpg'>"
Else
Return "<IMG SRC='epost.jpg'>"
End If
End Select
End Sub
</code>


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-11 16:44:35 - Magnus Jonsson

Okej har ändrat nu, som sagt är jag ny på det här, så det blir en del frågor. Varför kan den inte heta main?

Fick det här felmeddelandet


Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: BC30647: 'Return' statement in a Sub or a Set cannot return a value.

Source Error:



Line 67:
Line 68: If IsDbNull(obj)Then
Line 69: Return "<IMG SRC='ingen_epost.jpg'>"
Line 70: ElseIf obj.ToString.Length = 0 Then
Line 71: Return "<IMG SRC='ingen_epost.jpg'>"


Source File: c:\inetpub\wwwroot\personlig\gb\gb.VB Line: 69


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-11 17:12:49 - Raderat konto

Ah, den borde du kunna lista ut själv:
<code>
Private Sub main_ItemDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs) Handles main.ItemDataBound
Dim item As ListItemType = e.Item.ItemType
Dim lbl As Label
Dim obj As Object

Select Case item
Case ListItemType.Item, ListItemType.AlternatingItem
obj = e.Item.DataItem("Email")
lbl = CType(e.Item.FindControl("myLabelInGrid"), Label)

If IsDbNull(obj) OrElse obj.ToString.Length = 0 Then
lbl.Text = "<IMG SRC='ingen_epost.jpg'>"
Else
lbl.Text = "<IMG SRC='epost.jpg'>"
End If
End Select
End Sub
</code>
'Main' är ett reserverat ord i många programmeringsspråk och används i speciella sammanhang. Undvik därför.

Annars vill jag få rekommendera "Asp.Net Unleashed" av Stephen Walther, en mycket bra bok att lära sig grunderna från.


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-11 18:35:30 - Magnus Jonsson

Nu har jag ändrat lite ytterligare i koden, löst några felmeddelanden. Har bytt namn från main till sida, jag var även tvungen att ta bort "private sub" och ersätta det med sub.

Här är en del av min kod:

<code>
Function getData() As DataTable

'variabler fr SQL-satsen, ett DataSet, anslutningenstrngen till databasen, samt anslutningen till databasen
Dim SQL As string = "SELECT name, email, message FROM tbl_gb ORDER BY Id"
Dim ds As new DataSet()
Dim CnStr As string = "Provider=Microsoft.Jet.OleDb.4.0; data source=" & Server.MapPath("../db/db.mdb")
Dim Cn As new OleDbConnection(CnStr)

'skapa en OleDbDataAdapter och fyll Datasetet
Dim ODA As new OleDbDataAdapter(SQL, Cn)
ODA.Fill(ds, "tbl_gb")


Return ds.Tables("tbl_gb").Copy

'frigr resurser anvnda av OleDbDataAdaptern

ODA.Dispose()

End Function

Sub sida_ItemDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs) Handles sida.ItemDataBound
Dim item As ListItemType = e.Item.ItemType
Dim lbl As Label
Dim obj As Object

Select Case item
Case ListItemType.Item, ListItemType.AlternatingItem
obj = e.Item.DataItem("Email")
lbl = CType(e.Item.FindControl("myLabelInGrid"), Label)

If IsDbNull(obj) OrElse obj.ToString.Length = 0 Then
lbl.Text = "<IMG SRC='ingen_epost.jpg'>"
Else
lbl.Text = "<IMG SRC='epost.jpg'>"
End If
End Select

End Sub
</code>

Här är mitt felmeddelande

Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error:


Line 72:
Line 73: If IsDbNull(obj) OrElse obj.ToString.Length = 0 Then
Line 74: lbl.Text = "<IMG SRC='ingen_epost.jpg'>"
Line 75: Else
Line 76: lbl.Text = "<IMG SRC='epost.jpg'>"


Source File: c:\inetpub\wwwroot\personlig\gb\gb.VB Line: 74


Vad beror det på?

Nu stängs ju databasen innan den kör den här snutten obj = e.Item.DataItem("Email"), hur ska man göra så att de stängs efteråt, den måste väl göra det?


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-11 19:03:10 - Göran Andersson

Du har inget objekt som heter lbl.


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-11 20:09:57 - Magnus Jonsson

Hmm, hur ska man definera det då?

"Dim lbl As Label" Definerar inte det, så att lbl blir Label. Går inte att ha

Dim lbl As Label
Dim lbl As Object

Vad ska man ändra?


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-11 20:18:15 - Göran Andersson

Ska du inte lägga objektet direkt på webbsidan?

Annars deklarerar du den så här:

Dim lbl as New Label()

eller

Dim lbl as Label
lbl = New Label()


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-11 20:38:30 - Raderat konto

Nej nej nej nej. Du skall helt enkelt ha en Label i di repeater (i ItemTemplate). Ge den ett ID (jag har kallat den 'myLabelInGrid' i min kod) och använd det ID i FindControl. Detta är något av det mest basala att kunna i Asp.Net.


Svara

Sv: Några små frågor angånde asp.net!

Postades av 2004-05-11 20:55:58 - Magnus Jonsson

felet var att jag hade missat att döpa lable-fältet till myLabelInGrid, det hette lbl. Nu funkar det, tack för hjälpen!

Bara en fråga kvar nu, om man tex vill ha samma funktion fast det är till en hemsida. Hur gör man då för att ha två funktioner på ett bra sätt?

Är det bara att köra kopiera Select Case item... fast sedan ändra namn på de olika objekten?


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 166
27 952
271 704
1 464
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies