Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP自定义日历控件在回发时消失_C#_Javascript_Jquery_Css_Asp.net - Fatal编程技术网

C# ASP自定义日历控件在回发时消失

C# ASP自定义日历控件在回发时消失,c#,javascript,jquery,css,asp.net,C#,Javascript,Jquery,Css,Asp.net,我已经创建了一个自定义日历控件,它在大多数情况下都工作得非常完美。我的问题是,每当它发布时,控件就会消失,即使用户仍在悬停。我希望他们能够更改月份、日期等等,而不会消失divcalendar下拉列表。有什么建议吗 <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DateTimePickerObject.ascx.cs" Inherits="DateTimePicker.DateTimePickerObject" %&

我已经创建了一个自定义日历控件,它在大多数情况下都工作得非常完美。我的问题是,每当它发布时,控件就会消失,即使用户仍在悬停。我希望他们能够更改月份、日期等等,而不会消失
divcalendar下拉列表。有什么建议吗

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DateTimePickerObject.ascx.cs" Inherits="DateTimePicker.DateTimePickerObject" %>

<script type="text/javascript">
    var canHover = true;

    var calendarControl = $(".calendarControl"), flip = $(".divCalendarDropDown"),
    state = $.cookie("ToggleStatus");

    function setCalendarVisibility(className) {
        if (canHover) {
            var dropDown = document.getElementById("divCalendarDropDown");
            dropDown.className = className;
        }
    };
    function OnClick_Calendar() {
        var dropDown = document.getElementById("divCalendarDropDown");
        if (dropDown.style.height >= 1) {
            canHover = true;
            dropDown.className = 'divHidden';
        }
        else {
            canHover = false;
            dropDown.className = 'divNormal';
        };
    };
</script>
<style type="text/css">
    .textboxCalendar {
        position: relative;
        display: block;
        width: 215px;
    }
    .imgCalendar {
        position: absolute;
        left: 225px;
        top: 0px;
        margin: 0px 5px 0px 4px;
        height: 20px;
        width: auto;
    }
    .imgCalendar:hover {
        margin: 0px 7px 0px 4px;
        height: 21px;
    }
    div {
        float: left;
        width: 250px;
        top: 0px;
        margin-top: -2px;
        -webkit-transition:all ease-in-out 1s;
        -moz-transition:all ease-in-out 1s;
        -ms-transition:all ease-in-out 1s;
        -o-transition:all ease-in-out 1s;
        transition:all ease-in-out 1s;
        border-collapse: separate;
    }
        div:hover {
        }
    .divNormal {
        height: 0px;
        overflow: visible;
    }
    .divHidden {
        height: 0px;
        overflow: hidden;
    }
    .calendar {
        background-color: whitesmoke;
        position: relative;
        font-family: 'Segoe UI', Tahoma;
        opacity: 1;
    }
        .calendar a {
            font-weight: bolder;
        }
    .calendar th {
        font-weight: bold;
        color: #2C5A96;
    }
    .nextPrevStyle {
    }
    .dayHeaderStyle {
    }
    .dayStyle {
        background-color: #E3ECF7;
    }
    .otherMonthDayStyle {
        background-color:  #fbfbfb;
    }
    .selectedDayStyle {
    }
    .titleStyle {
        background-color: #E3ECF7;
    }
    .todayDayStyle {
        background-color: #fbdf93;
    }
    .weekendDayStyle {
        background-color:  #c5d6f1;
    }
    .calendarControl {
        position: relative;
        z-index: 1;
        height: auto;
        width: 252px;
    }
</style>
<div class="calendarControl">
    <asp:TextBox runat="server" ID="textboxCalendar" onMouseOver="setCalendarVisibility('divNormal');" onMouseOut="setCalendarVisibility('divHidden');" onBlur="textboxCalendar_OnBlur()" ReadOnly="True" CssClass="textboxCalendar"></asp:TextBox>
    <span id="spanCalendar" class="spanCalendar"><img id="imgCalendar" src="calendar.png" alt="Calendar" class="imgCalendar" onclick="OnClick_Calendar();"/></span>
    <div id="divCalendarDropDown" onMouseOver="setCalendarVisibility('divNormal');" onMouseOut="setCalendarVisibility('divHidden');">
        <asp:Calendar runat="server" ID="calendarMain" OnSelectionChanged="calendarMain_SelectionChanged" CssClass="calendar" NextPrevFormat="CustomText" NextMonthText=">>" PrevMonthText="<<" SelectionMode="Day" >
            <NextPrevStyle CssClass="nextPrevStyle" />
            <DayHeaderStyle CssClass="dayHeaderStyle" />
            <DayStyle CssClass="dayStyle" />
            <OtherMonthDayStyle CssClass="otherMonthDayStyle" />
            <SelectedDayStyle CssClass="selectedDayStyle" />
            <TitleStyle CssClass="titleStyle" />
            <TodayDayStyle CssClass="todayDayStyle" />
            <WeekendDayStyle CssClass="weekendDayStyle" />
        </asp:Calendar>
    </div>
</div>

var canHover=true;
var calendarControl=$(“.calendarControl”),flip=$(“.divCalendarDropDown”),
状态=$.cookie(“切换状态”);
函数setCalendarVisibility(类名){
如果(可以悬停){
var dropDown=document.getElementById(“divCalendarDropDown”);
dropDown.className=className;
}
};
函数OnClick_Calendar(){
var dropDown=document.getElementById(“divCalendarDropDown”);
如果(dropDown.style.height>=1){
canHover=true;
dropDown.className='divHidden';
}
否则{
canHover=false;
dropDown.className='divNormal';
};
};
.textbox日历{
位置:相对位置;
显示:块;
宽度:215px;
}
.imgCalendar{
位置:绝对位置;
左:225px;
顶部:0px;
保证金:0px 5px 0px 4px;
高度:20px;
宽度:自动;
}
.imgCalendar:悬停{
保证金:0px 7px 0px 4px;
高度:21px;
}
div{
浮动:左;
宽度:250px;
顶部:0px;
页边顶部:-2px;
-webkit过渡:所有的易入易出1;
-moz转换:所有的易进易出1s;
-ms转换:所有输入输出1秒;
-o型转换:所有输入输出1秒;
过渡:所有输入输出1秒;
边界塌陷:分离;
}
div:悬停{
}
.divNormal{
高度:0px;
溢出:可见;
}
.divHidden{
高度:0px;
溢出:隐藏;
}
.日历{
背景色:白烟;
位置:相对位置;
字体系列:“Segoe UI”,塔荷马;
不透明度:1;
}
.日历a{
字体大小:粗体;
}
.日历日{
字体大小:粗体;
颜色:#2C5A96;
}
.nextPrevStyle{
}
dayHeaderStyle先生{
}
.dayStyle{
背景色:#E3ECF7;
}
.Othermonthday风格{
背景色:#fbfb;
}
.选择的日期样式{
}
titleStyle先生{
背景色:#E3ECF7;
}
.今天的风格{
背景色:#fbdf93;
}
.weekendDayStyle{
背景色:#c5d6f1;
}
.日历控件{
位置:相对位置;
z指数:1;
高度:自动;
宽度:252px;
}

我想把它放在评论中,但我还不能;)

我认为您不能使用asp:Calendar控件禁用回发到服务器的功能,因此请尝试向您的DIV“divCalendarDropDown”添加一个默认类


如果这不起作用,我会尝试向那个DIV添加另一个动作,比如onload上的onblur

<div id="divCalendarDropDown" onload="setCalendarVisibility('divNormal');" onMouseOver="setCalendarVisibility('divNormal');" onMouseOut="setCalendarVisibility('divHidden');">


希望这有帮助!JM

如果您无法避免回发,那么您可以添加一个
,并编写一些JavaScript,在日历的可见性每次更改时设置其值。然后,当页面加载时,使用JavaScript读取隐藏字段的值,并根据该值设置初始日历可见性。
<div id="divCalendarDropDown" onload="setCalendarVisibility('divNormal');" onMouseOver="setCalendarVisibility('divNormal');" onMouseOut="setCalendarVisibility('divHidden');">