Jag har en asp:Calendar och vill köra den mot en SQL databas.
Jag vill skriva ut t.ex ett OK om det finns en notering i databasen som har samma datum som någon av dagarna i den visade månadens kalender.
Till exempel har jag en notering datumen 2002-10-11 och 2002-10-23. I respektive datum celler som har dessa datum i kalendern ska det stå t.ex ett OK. De andra cellerna ska bara visa datumen.
Visst går det! Detta gör du med dayrendern som är en slags loop som rullar igenom dag för dag i din kalender. Där kan du stoppa in/sätta värden på de olika cellerna.
Mitt problem är hur jag ska omvandla exemplet nedan till att hämta data från min sql server och lopa igenom min databas och kolla om det finns något datum som överensstämmer med månadens dagar och finns det det så ska jag få ett OK i den aktuella cellen. Hur ända in i baljan gör jag det?
Jag är nybörjare med NET.....
Dim holidays(12,31) as String
Sub Page_Load(sender As Object, e As EventArgs)
holidays(1,1) = "New Year's Day"
holidays(1,26) = "Australia Day"
holidays(2,2) = "Groundhog Day"
holidays(2,14) = "Valentine's Day"
holidays(3,17) = "St. Patrick's Day"
holidays(4,1) = "April Fool's Day"
holidays(5,1) = "May Day"
holidays(6,15) = "My Birthday"
holidays(7,15) = "My Anniversary"
holidays(8,15) = "My Mother's Birthday"
holidays(9,24) = "Autumnal Equinox"
holidays(12,26) = "Boxing Day"
End Sub
Sub Calendar1_DayRender(sender As Object, e As DayRenderEventArgs)
Dim d as CalendarDay
Dim c as TableCell
d = e.Day
c = e.Cell
If d.IsOtherMonth Then
c.Controls.Clear
Else
Try
Dim Hol As String = holidays(d.Date.Month,d.Date.Day)
If Hol \<\> "" Then
c.Controls.Add(new LiteralControl("\<br\>" + Hol))
End If
Catch exc as Exception
Response.Write (exc.ToString())
End Try
End If
End Sub
Du kan använda samma teknik. I exemplet har de en array som de sätter statiskt i koden, men det går naturligtvis även att stoppa in dina data på motsvarande sätt. Hämta dina datum, stoppa in dem i en array som ser likadan ut så behöver du inte modifiera koden så mycket! I ditt fall ska du ju bara skriva ut OK, så då räcker det med en if-sats där du skriver OK om datumet finns, annars gör du inget i den cellen.
Dim thisDate As String = myDateArray(d.Date.Month,d.Date.Day)
If thisDate <> "" Then
c.Controls.Add(new LiteralControl("OK!"))
Jag måste erkänna att array är nytt för mig när det gäller att hämta ur en databas. Har nu försökt hela dagen och jag får bara error.
Kan jag få en hjälpande hand som talar om för mig vad jag gör för fel.....
Dim myDateArray(12,31) as String
Sub Page_Load(sender As Object, e As EventArgs)
MyConnection = New SqlConnection("Data Source=(local);" & "Initial Catalog=mindatabas;" & "User ID=sa;" & "Password=")
MyCommand = New SqlCommand("select tavlingdatum from kalender", MyConnection)
MyConnection.Open()
dr = MyCommand.ExecuteReader()
While dr.Read()
If dr("tavlingdatum") \<\> "" Then
myDateArray = "(" & replace(Right(dr("tavlingdatum"),5),"-", ",") & ")\<br\>"
End If
End While
MyConnection.Close()
end sub
Sub Calendar1_DayRender(sender As Object, e As DayRenderEventArgs)
Dim d as CalendarDay
Dim c as TableCell
d = e.Day
c = e.Cell
If d.IsOtherMonth Then
c.Controls.Clear
Else
Try
Dim thisDate As String = myDateArray(d.Date.Month,d.Date.Day)
If thisDate \<\> "" Then
c.Controls.Add(new LiteralControl("OK!"))
End If
Catch exc as Exception
Response.Write (exc.ToString())
End Try
End If
End Sub
136 ms totalt · 3 externa anrop · v20260731065814-full.55e59744