日历控件重写

Imports CyberRS2.APS.BusinessFacade

Imports CyberRS2.APS.Model

Imports CyberRS2.APS.SysCommon

Imports cyberrs2.APS.BusinessFacade.HolidayFacade

 

 

 

 

Public Class ManageHolidaySet

    Inherits System.Web.UI.Page

    Protected WithEvents Calendar1 As System.Web.UI.WebControls.Calendar

 

    Protected WithEvents TD1 As System.Web.UI.HtmlControls.HtmlTableCell

    Protected WithEvents TD2 As System.Web.UI.HtmlControls.HtmlTableCell

    Protected WithEvents TD3 As System.Web.UI.HtmlControls.HtmlTableCell

    Protected WithEvents TD4 As System.Web.UI.HtmlControls.HtmlTableCell

 

 

    Protected WithEvents ddlYear As System.Web.UI.WebControls.DropDownList

    Protected WithEvents ddlMonth As System.Web.UI.WebControls.DropDownList

    Protected WithEvents btn_sure1 As System.Web.UI.WebControls.ImageButton

    Protected WithEvents btn_dfhdset1 As System.Web.UI.WebControls.ImageButton

    Protected WithEvents btn_restore1 As System.Web.UI.WebControls.ImageButton

 

#Region " Web 窗体设计器生成的代码 "

 

    '该调用是 Web 窗体设计器所必需的。

    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

 

    End Sub

 

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init

        'CODEGEN: 此方法调用是 Web 窗体设计器所必需的

        '不要使用代码编辑器修改它。

        InitializeComponent()

    End Sub

 

#End Region

    Private holiday As String = ""

    Dim defarray() As String

    Private dt As New DataTable()

    Dim flag As Integer

 

 

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        '在此处放置初始化页的用户代码

        Dim intyear As Integer

        Dim intmonth As Integer

 

        If Not Me.IsPostBack Then

 

            btn_sure1.Attributes.Add("onmouseover", "this.src='../images/btn_sure2.gif';")

            btn_sure1.Attributes.Add("onmouseout", "this.src='../images/btn_sure1.gif';")

            btn_dfhdset1.Attributes.Add("onmouseover", "this.src='../images/btn_dfhdset2.gif';")

            btn_dfhdset1.Attributes.Add("onmouseout", "this.src='../images/btn_dfhdset1.gif';")

            btn_restore1.Attributes.Add("onmouseover", "this.src='../images/btn_restore2.gif';")

            btn_restore1.Attributes.Add("onmouseout", "this.src='../images/btn_restore1.gif';")

 

            intyear = Now.Year()

            intmonth = Now.Month()

            ''''''''''''''''''''''''''''''''''''''

            Me.ddlYear.SelectedIndex = Me.ddlYear.Items.IndexOf(Me.ddlYear.Items.FindByValue(intyear.ToString))

            Me.ddlMonth.SelectedIndex = Me.ddlMonth.Items.IndexOf(Me.ddlMonth.Items.FindByValue(intmonth.ToString))

 

            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            ' Declare DataColumn and DataRow variables.

            Dim myDataColumn As DataColumn

            Dim myDataRow As DataRow

 

            ' Create new DataColumn, set DataType, ColumnName and add to DataTable.   

            myDataColumn = New DataColumn()

            myDataColumn.DataType = System.Type.GetType("System.String")

            myDataColumn.ColumnName = "Year"

            dt.Columns.Add(myDataColumn)

 

            ' Create second column.

            myDataColumn = New DataColumn()

            myDataColumn.DataType = Type.GetType("System.String")

            myDataColumn.ColumnName = "Month"

            dt.Columns.Add(myDataColumn)

 

            ' Create three column.

            myDataColumn = New DataColumn()

            myDataColumn.DataType = Type.GetType("System.String")

            myDataColumn.ColumnName = "Day"

            dt.Columns.Add(myDataColumn)

 

            ' Create four column.

            myDataColumn = New DataColumn()

            myDataColumn.DataType = Type.GetType("System.String")

            myDataColumn.ColumnName = "flag"

            dt.Columns.Add(myDataColumn)

 

            '定义一个Session

            ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Dim selstr As String

 

            selstr = "select * from sys_holiday"

            dt = HolidayFacade.GetMonthHoliday(selstr)

            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

            Session("SelectDays") = dt

        End If

        Me.Calendar1.SelectedDate = Nothing

    End Sub

 

 

 

    Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.PreRender

        dt = CType(Session("SelectDays"), DataTable)

        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

        '只有当点击了日历上的日期时才实现

        If Not Me.Calendar1.SelectedDate = Nothing Then

            Dim newrow As DataRow = dt.NewRow

            Dim eachrow As DataRow

 

            '查询session,该日期是否已经存在于session中,如果在则删除该条记录;不在则添加该条记录

            For Each eachrow In dt.Rows

                '有这条记录就删除它

                If eachrow.Item(0) = Me.Calendar1.SelectedDate.Year And eachrow.Item(1) = Me.Calendar1.SelectedDate.Month And eachrow.Item(2) = Me.Calendar1.SelectedDate.Day Then

                    dt.Rows.Remove(eachrow)

 

                    Session("SelectDays") = dt

                    flag = 0

                    Exit Sub

                End If

            Next

            '没有这条记录就添加它

            newrow.Item(0) = Me.Calendar1.SelectedDate.Year

            newrow.Item(1) = Me.Calendar1.SelectedDate.Month

            newrow.Item(2) = Me.Calendar1.SelectedDate.Day

            newrow.Item(3) = "1"

            dt.Rows.Add(newrow)

            Session("SelectDays") = dt

            flag = 0

        End If

 

           '没有点击了日历上的日期,实现下列代码

        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

        '1.1  页面导入时实现,当这个月没有设置过假日时使用默认设置,session为空;否则使用数据库中的记录,session中为数据库中的记录

        '2.1  当dropdownlist改变时,也需要实现,当新选择的月没有设置过假日时使用默认设置,session不变;否则使用数据库中的记录,把数据库中的记录添加如session中

 

        '得到当前显示月的假日设置

        If Me.Calendar1.SelectedDate = Nothing Then

            Dim selstr As String

            Dim foundRows As DataRow()

            selstr = "year='" & Me.ddlYear.SelectedItem.Value & "'and month='" & Me.ddlMonth.SelectedItem.Value & "'"

            foundRows = dt.Select(selstr)

            '如果数据库中没有假日设定的纪录 ---- 得到默认的假日设定 例如:5,6        

            If foundRows.Length = 0 Then

                HolidayFacade.GetDefHolidy(holiday)

                '将字符串生成数组              

                defarray = Split(holiday, ",")

                flag = 1

            End If

        End If

    End Sub

 

 

 

 

 

 

    Private Sub Calendar1_DayRender(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DayRenderEventArgs) Handles Calendar1.DayRender

        '如果不是这个月里的日期的天,则禁用该日期的Enabled,IsSelectable

        If Me.Calendar1.VisibleDate <> Nothing Then

            If e.Day.Date.Month <> Me.Calendar1.VisibleDate.Month Then

                e.Day.IsSelectable = False

                e.Cell.Enabled = False

                Exit Sub

            End If

        Else

            If e.Day.Date.Month <> Me.Calendar1.TodaysDate.Month Then

                e.Day.IsSelectable = False

                e.Cell.Enabled = False

                Exit Sub

            End If

        End If

 

        '使被选中的日期变成红色的字体

 

        dt = CType(Session("SelectDays"), DataTable)

        '如果数据库中没有假日设定的纪录,得到默认的假日设定

        If flag = 1 Then

            Dim str As String

            For Each str In Me.defarray

                If e.Day.Date.DayOfWeek = Integer.Parse(str) Then

                    e.Cell.ForeColor = System.Drawing.Color.Red

 

                    '''先将默认假日设定的日期放入session变量中

                    Dim newrow As DataRow = dt.NewRow

                    newrow.Item(0) = e.Day.Date.Year

                    newrow.Item(1) = e.Day.Date.Month

                    newrow.Item(2) = e.Day.Date.Day

                    newrow.Item(3) = "1"

                    dt.Rows.Add(newrow)

                End If

            Next

            Session("SelectDays") = dt

            '如果数据库中有假日设定的纪录,读session中的值

        Else

            Dim i As Integer

            dt = CType(Session("SelectDays"), DataTable)

            For i = 0 To dt.Rows.Count - 1

                If e.Day.Date.Year = dt.Rows.Item(i).Item(0) And e.Day.Date.Month = dt.Rows.Item(i).Item(1) And e.Day.Date.Day = dt.Rows.Item(i).Item(2) Then

                    e.Cell.ForeColor = System.Drawing.Color.Red

                End If

            Next

        End If

    End Sub

 

 

   

 

    Private Sub btn_sure1_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btn_sure1.Click

        dt = CType(Session("SelectDays"), DataTable)

        Dim content As String

        Dim myMsgCode As New CyberRS2.APS.BusinessFacade.MsgCodeFacade()

        If Integer.Parse(HolidayFacade.ModifyHoliday(dt)) = 1 Then

            content = myMsgCode.GetMsg("MUF11001", WebUIConfig.CurrentLanguage)

            Page.RegisterStartupScript("", "<script language='javascript'>alert('" & content & "')</script>")

            Return

        Else

            content = myMsgCode.GetMsg("MUF11002", WebUIConfig.CurrentLanguage)

            Page.RegisterStartupScript("", "<script language='javascript'>alert('" & content & "')</script>")

            Return

        End If

    End Sub

 

    Private Sub ddlYear_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ddlYear.SelectedIndexChanged

        Me.Calendar1.VisibleDate = New DateTime(Integer.Parse(Me.ddlYear.SelectedItem.Value), Integer.Parse(Me.ddlMonth.SelectedItem.Value), 1)

    End Sub

 

    Private Sub ddlMonth_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ddlMonth.SelectedIndexChanged

        Me.Calendar1.VisibleDate = New DateTime(Integer.Parse(Me.ddlYear.SelectedItem.Value), Integer.Parse(Me.ddlMonth.SelectedItem.Value), 1)

    End Sub

 

    Private Sub btn_restore1_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btn_restore1.Click

        Dim year As String = Me.ddlYear.SelectedItem.Value

        Dim month As String = Me.ddlMonth.SelectedItem.Value

        If HolidayFacade.RestoreDefHoliday(year, month) = 1 Then

            dt = CType(Session("SelectDays"), DataTable)

            Dim i As Integer

            '删除session中的该月记录      

            '查询session,查询属于该月的记录是否已经存在于session中,如果在则删除该条记录        

            i = dt.Rows.Count

            While i <> 0

                If dt.Rows.Item(i - 1).Item(0) = year And dt.Rows.Item(i - 1)(1) = month Then

                    dt.Rows.Remove(dt.Rows.Item(i - 1))

                End If

                i = i - 1

            End While

            Session("SelectDays") = dt

        End If

    End Sub

 

    Private Sub btn_dfhdset1_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btn_dfhdset1.Click

        Me.RegisterStartupScript("Open1", "<script language='javascript'>window.open('../SysAdmin/DefHolidaySet.aspx?','','height=300,width=600,top=200,left=250,toolbar=no,menubar=no,resizable=no,location=no,status=no');</script>")

        'Response.Redirect("../SysAdmin/DefHolidaySet.aspx")

    End Sub

 

 

    Private Sub Calendar1_VisibleMonthChanged(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MonthChangedEventArgs) Handles Calendar1.VisibleMonthChanged

        If e.NewDate.Month <> e.PreviousDate.Month Then

            Me.ddlYear.SelectedIndex = Me.ddlYear.Items.IndexOf(Me.ddlYear.Items.FindByValue(Me.Calendar1.VisibleDate.Year.ToString))

            Me.ddlMonth.SelectedIndex = Me.ddlMonth.Items.IndexOf(Me.ddlMonth.Items.FindByValue(Me.Calendar1.VisibleDate.Month.ToString))

        End If

    End Sub

 

 

End Class

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值