Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541

    colorare giorno calendario

    Ciao a tutti in una pagina ho messo un asp calendar, ora al caricamento della pagina vorrei fare in modo che andando a leggere da una tabella (Eventi) del DB, mi mettesse un fore color diverso dove risultano le date trovate nella tabella.

    Come posso fare?

    Ecco il mio codice:

    codice:
    <asp:Calendar ID="Calendar1" runat="server" BackColor="#FF8000" Font-Names="Verdana"
                Font-Size="10pt" ForeColor="Black">
                <DayStyle BackColor="#E0E0E0" BorderColor="#FF8000" BorderStyle="Solid" BorderWidth="1px" />
                <NextPrevStyle BackColor="#FF8000" />
                <DayHeaderStyle BackColor="Gray" ForeColor="White" />
            </asp:Calendar>

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    30
    Ciao...
    Volevo fare la stessa cosa..ci sei per caso riuscito?
    Io ho trovato un esempio qui "http://msdn.microsoft.com/it-it/library/ms228044(VS.80).aspx" ma ho qualche problema ad adattarlo al mio scopo.

    Fammi sapere ciao!

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Dovresti mettere tutte le date in un oggettino tipo un datatable e poi farne la ricerca (magari con il metodo Select ed XPath) nell'evento _DayRender del calendario.
    Se esiste, poi colorare il testo della cella:

    codice:
        Protected Sub calendario_DayRender(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DayRenderEventArgs) Handles calendario.DayRender
            Dim riga() As DataRow = dtableEventi.Select("NOME_COLONNA_DELLE_DATE='" & e.Day.Date.ToString & "'")
            If riga.Length > 0 then
             e.Cell.ForeColor = Drawing.Color.Green
           end if
        End Sub

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    30
    se non sei ancora riuscito di invio il mio codice che ho scopiazzato qua e là forse non serve tutto, ed è da sistemare (cosa che devo ancora fare) però ti da qualche indicazione

    Il mio colora di rosso tutte le scadenze

    Protected Sub Page_Load(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
    Calendar1.VisibleDate = DateTime.Today
    FillScadenzeDataset()
    End If
    End Sub

    Protected Sub FillScadenzeDataset() 'deve riempire il dataset con i dati
    Dim firstDate As New DateTime(Calendar1.VisibleDate.Year, _
    Calendar1.VisibleDate.Month, 1) 'ottenere la prima data è facile però in formato americano
    'firstDate = formatDateTimeDb(firstDate) 'converto la data nel formato italiano
    Dim lastDate As DateTime = GetFirstDayOfNextMonth() 'ottenere la prima data del mese successivo bisogna fare qualche lavoro
    'lastDate = formatDateTimeDb(lastDate) 'converto la data nel formato italiano
    dsScadenze = GetCurrentMonthData(firstDate, lastDate) 'ottiene il dataset
    End Sub

    Protected Function GetFirstDayOfNextMonth() As DateTime 'la prima data del prossimo mese
    Dim monthNumber, yearNumber As Integer
    If Calendar1.VisibleDate.Month = 12 Then 'se siamo a dicembra allora il mese è gennaio
    monthNumber = 1
    yearNumber = Calendar1.VisibleDate.Year + 1
    Else 'altrimenti siamo a mese corrente +1
    monthNumber = Calendar1.VisibleDate.Month + 1
    yearNumber = Calendar1.VisibleDate.Year
    End If
    Dim lastDate As New DateTime(yearNumber, monthNumber, 1) 'datetime compone la dat ma in formato americano
    Return lastDate
    End Function

    Protected Sub Calendar1_VisibleMonthChanged(ByVal sender As Object, _
    ByVal e As System.Web.UI.WebControls.MonthChangedEventArgs) _
    Handles Calendar1.VisibleMonthChanged
    FillScadenzeDataset()
    End Sub

    Function GetCurrentMonthData(ByVal firstDate As DateTime, ByVal lastDate As DateTime) As DataTable
    Dim MyConnection As OleDbConnection
    Dim MyCommand As OleDbCommand


    'Collegamento con il database
    MyConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLED B.4.0;Data Source=C:\Documents and Settings\06109\Desktop\Antincendio.mdb")


    'creazione del comando
    MyCommand = New OleDbCommand()
    MyCommand.CommandText = " SELECT t9.id_verifica, t9.id_presidio, t9.descrizione, t9.ultimoControllo, t9.cadenza, (DateAdd(" & Chr(34) & "m" & Chr(34) & ",[t9]![cadenza],[t9]![ultimoControllo])) AS prossimoControllo FROM t9;" ' WHERE ((((DateAdd(" & Chr(34) & "m" & Chr(34) & ",[t9]![cadenza],[t9]![ultimoControllo])))>@firstDate And ((DateAdd(" & Chr(34) & "m" & Chr(34) & ",[t9]![cadenza],[t9]![ultimoControllo])))<@lastDate));"

    MyCommand.CommandType = CommandType.Text
    MyCommand.Connection = MyConnection

    'MyCommand.Parameters.AddWithValue("@firstDate", firstDate)
    'MyCommand.Parameters.AddWithValue("@lastDate", lastDate)

    Dim myAdapter As New OleDbDataAdapter(MyCommand) 'crea un dataAdapter
    Dim dsMonth As DataTable = New DataTable()

    myAdapter.SelectCommand = MyCommand
    Try
    myAdapter.Fill(dsMonth) 'riempie il dataSet con i dati ottenuti dalla query
    Catch
    End Try
    Return dsMonth 'ritorna il datatset

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.