Avatar billede martin_moth Mester
28. januar 2004 - 12:29 Der er 6 kommentarer og
1 løsning

Dayrender i calender

Jeg er ret grøn i ASP.NET, og søger hjælp til følgende:

Jeg har en MyCalendar.xml og en Kalender.aspx med en calender web control.

Jeg vil have kalenderen til at læse begivenheder fra xml-filen, og markere de dage hvor der "sker noget" (som i Outlook)

Jeg kan fint få vist hvad der sker en bestemt dag, hvis jeg kilkker på datoen, for så trigger jeg Calendar1_SelectionChanged, hvor jeg så udskriver hvad der nu sker den pågældende dato... Men hvordan får jeg vist på kalenderen, at der nu er en aftale de forskellige datoer - jeg har forsøgt med DayRender, men kan ikke få det til at virke.

Jeg ved godt, at jeg burde læse en bog osv, og giver jer ret, og det gjorde jeg også for lidt for lang tid siden...

Håber nogen gider give sig tid til lige at kaste et blik på det, og sige hvad der er galt, hvorfor, og hvordan det rettes...


----------MyCalender.xml-------------

<?xml version="1.0" standalone="yes"?>
<MyCalendar>
  <Event>
  <Event>
    <ShortDesc>Bryllup</ShortDesc>
    <DetailDesc>Brullup, Mark & Maria</DetailDesc>
    <EventDate>2004-02-02</EventDate>
    <StartTime>08:00</StartTime>
    <EndTime>23:00</EndTime>
  </Event>
  </MyCalendar>


---------Kalender.aspx ---------------------------------
<%@ Page  %>
<%@ import Namespace="System.Data" %>
<script runat="server">


        Sub Opdater(dato)
            dim myCalender=New DataSet
            myCalender.ReadXml(MapPath("MyCalendar.xml"))
   
            Dim MyTable As DataTable
            MyTable = New DataTable
            MyTable = myCalender.Tables(0)
            Dim numrows as integer = MyTable.Rows.Count
            Dim objResults() As DataRow
            Dim strFilterExpr as String = "EventDate LIKE '" & Dato & "'"
            Dim strSortString as String = "StartTime"
            objResults = Mytable.Select(strFilterExpr, strSortString)
   
            Dim objRow As DataRow
            Dim strResult As String = "<table>"

            strResult +="<td><b>Emne</td>"
            strResult +="<td><b>Dato</td>"
            strResult +="<td><b>Start</td>"
            strResult +="<td><b>Slut</td></tr>"
   
   
            Dim res as Boolean = False
            For Each objRow In objResults
                res = True
                strResult += "<tr><td>&nbsp; " & objRow(1) _
                    & "</td><td>&nbsp; " & objRow(2) & "</td></td><td>&nbsp; " & objRow(3) _
                    & "</td></td><td>&nbsp; " & objRow(4) & "</td></tr>"
            Next
            strResult +="</table>"
            if Not res then strResult = "..."
            outResults.innerHTML = strResult
   
        End Sub
   
Sub Calendar1_SelectionChanged(sender As Object, e As EventArgs)
Dim Dato as DateTime = calendar1.SelectedDate
Dim strDato as String = Dato.ToString("yyyy-MM-dd")
Opdater(strDato)
End Sub

Sub DayRender(source As Object, e As DayRenderEventArgs)
  dim myCalender=New DataSet
  myCalender.ReadXml(MapPath("MyCalendar.xml"))
  Dim MyTable As DataTable
  MyTable = New DataTable
  MyTable = myCalender.Tables(0)
  Dim objRow As DataRow
    For Each objRow In MyTable.Rows
    If objRow(2) = e.Day.Date Then
      e.Cell.CssClass = "fed"
    End If
    Next
End Sub


</script>
<html>
<head></head>
<body>
<form runat="server">
  <table width="90%">
    <tbody>
      <tr>
        <td>
          <p align="center">
          <asp:Calendar id="Calendar1" runat="server" OnSelectionChanged="Calendar1_SelectionChanged" BorderWidth="1px" NextPrevFormat="FullMonth"  Width="250px" ForeColor="Black" Height="190px" Font-Size="9pt" Font-Names="Verdana" BorderColor="White">
          <TodayDayStyle backcolor="#CCCCCC"></TodayDayStyle>
          <NextPrevStyle font-size="8pt" font-bold="True" forecolor="#333333" verticalalign="Bottom"></NextPrevStyle>
          <DayHeaderStyle font-size="8pt" font-bold="True"></DayHeaderStyle>
          <SelectedDayStyle forecolor="White" backcolor="#333399"></SelectedDayStyle>
          <TitleStyle font-size="12pt" font-bold="True" borderwidth="4px" forecolor="#333399" bordercolor="Black" backcolor="White"></TitleStyle>
          <OtherMonthDayStyle forecolor="#999999"></OtherMonthDayStyle>
          </asp:Calendar>
        </p>
      </td>
    </tr>
    </tbody>
  </table>
</p>
<div id="outResults" runat="server">
</div>
</form>
</body>
</html>
Avatar billede thor.ostergaard Nybegynder
28. januar 2004 - 12:37 #1
Avatar billede martin_moth Mester
28. januar 2004 - 12:54 #2
Har luret på det...

Jeg ved godt at det er en helt forkert holdning at have, men jeg ønsker at få rettet min ovenstående kode så den virker, og dage med begivenheder bliver gjort fede. Jeg kan så senere selv sætte mig bedre ind i det hele (jeg irreterer mig selv over den type spørgsmål, men nu stiller jeg altså selv et :o)
Avatar billede martin_moth Mester
28. januar 2004 - 12:56 #3
Og dog - ovenstående eksempel ser fint ud. Men hurn får jeg det til at virke - den første del (html-delen) skal vel stå i en .aspx-fil. Hvor skal kodedelen så stå - i en seperat fil, eller i et <script> tag i .aspx-filen
Avatar billede martin_moth Mester
28. januar 2004 - 13:18 #4
Jeg har på fornemmelsen at dayrender aldrig bliver kørt, uanset hvad jeg skriver i den sker der absolut intet
Avatar billede martin_moth Mester
28. januar 2004 - 13:36 #5
Jeg kan ikke engang få den til fx. at skifte baggrundsfarve på d. 10 i hver måned:

Sub DayRender(source As Object, e As DayRenderEventArgs)
If e.Day.Date.Day = 10 Then
    e.Cell.BackColor = System.Drawing.Color.Red
  End If
End Sub

Hvorfor virker det ikke?
Avatar billede martin_moth Mester
28. januar 2004 - 13:59 #6
OK - for at gøre det helt simpelt:




--------------Text.aspx------------------
<%@ Page  %>
<%@ import Namespace="System.Data" %>

<script runat="server">
  Sub DayRender(source As Object, e As DayRenderEventArgs)
    If e.Day.Date.Day = 10 Then
      e.Cell.BackColor = System.Drawing.Color.Red
    End If
  End Sub
</script>

<html>
<head></head>
<body>
<form runat="server">
  <asp:Calendar id="Calendar1" runat="server"  NextPrevFormat="FullMonth">
  </asp:Calendar>
  </form>
</body>

Alle d.10 i hver måned burde blive med rød baggrund, men det sker ikke ???
</html>
Avatar billede martin_moth Mester
28. januar 2004 - 14:12 #7
hold kæft hvor er jeg god - jeg manglede en OnDayRender="DayRender" i min kalenderdefinition
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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