惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Project Zero
Project Zero
Security Archives - TechRepublic
Security Archives - TechRepublic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Security @ Cisco Blogs
AI
AI
博客园_首页
The Last Watchdog
The Last Watchdog
S
SegmentFault 最新的问题
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Know Your Adversary
Know Your Adversary
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Google Online Security Blog
Google Online Security Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Security Affairs
Blog — PlanetScale
Blog — PlanetScale
V2EX - 技术
V2EX - 技术
www.infosecurity-magazine.com
www.infosecurity-magazine.com
云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
O
OpenAI News
Scott Helme
Scott Helme
C
Cisco Blogs
雷峰网
雷峰网
H
Help Net Security
P
Palo Alto Networks Blog
MyScale Blog
MyScale Blog
I
Intezer
Security Latest
Security Latest
N
News | PayPal Newsroom
美团技术团队
N
News and Events Feed by Topic
B
Blog RSS Feed
T
Tor Project blog
小众软件
小众软件
T
Tenable Blog
aimingoo的专栏
aimingoo的专栏
U
Unit 42
MongoDB | Blog
MongoDB | Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Application and Cybersecurity Blog
Application and Cybersecurity Blog
月光博客
月光博客
L
Lohrmann on Cybersecurity
T
Tailwind CSS Blog
K
Kaspersky official blog
C
Cyber Attacks, Cyber Crime and Cyber Security
WordPress大学
WordPress大学
P
Proofpoint News Feed
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
P
Privacy International News Feed

博客园 - squirrel_sc

强人工智能:抑制神经元的意义 强人工智能基本问题:全局控制与自组织 程序员,为未来准备好了吗? 强人工智能基本问题:自上而下,还是自下而上。 强人工智能基本问题:神经网络分层还是不分层 什么阻碍了强人工智能的发展 人类和强人工智能的关系(人类会被灭掉吗?) 为什么需要强人工智能 神经网络和机器学习、强人工智能 重新开张! 招全职asp.net中高级程序员 遍历所有session并取值 使用批处理出现奇怪的现象 asp.net设置默认按钮的一种方法(041217更新) httpcompress实际效果能有多少? 大Sql的切分执行 轻量级的数据库访问类 041104版 vb.net和C#开发环境和开发效率的比较 被.net郁闷的一天
IE5下通过、不会被列表框遮挡的日期控件
squirrel_sc · 2004-10-12 · via 博客园 - squirrel_sc

一般不会被列表框遮挡的日期控件都是用一个透明的iframe来做的,但在IE5下因为透明风格不被支持却无法正常使用。这个控件直接使用iframe作为日期选择界面,就解决了兼容性问题。不过只有简单的选择功能,如果大家给它添加了新的功能,记得告诉我一下。我有时间也给它添点功能,比如设定可选择时间段、快捷选择年份和月份等等。
控件代码:

Imports System.ComponentModel
Imports System.Web.UI

<DefaultProperty("Text"), ToolboxData("<{0}:DateControl runat=server></{0}:DateControl>")> Public Class DateControl
    
Inherits System.Web.UI.WebControls.WebControl

    
Dim content As String = "<INPUT class=""INPUTCLASS"" onclick=""ShowDateControl()"" type=""text"" size=""12"" name=""FormName"" id=""IDNameInput"" value=""IDTEXT"" readonly=true>" & vbCrLf & _
            
"<INPUT class=""BUTTONCLASS"" onclick=""ShowDateControl()"" type=""button"" value=""输入"" id=""IDNameButton"">" & vbCrLf

    
Dim _text As String
    
Dim _classInput As String
    
Dim _classButton As String
    
Dim _name As String = "StartDate"
    Dim _id As String = "DCControl"

    '日期初始值
    <Category("Appearance"), DefaultValue("")> Property [Text]() As String
        
Get
            
Return _text
        
End Get
        
Set(ByVal Value As String)
            _text 
= Value
        
End Set
    
End Property


    
'输入框的css
    <Category("Appearance"), DefaultValue("")> Property ClassInput() As String
        
Get
            
Return _classInput
        
End Get
        
Set(ByVal Value As String)
            _classInput 
= Value
        
End Set
    
End Property


    
'按钮的css
    <Category("Appearance"), DefaultValue("")> Property ClassButton() As String
        
Get
            
Return _classButton
        
End Get
        
Set(ByVal Value As String)
            _classButton 
= Value
        
End Set
    
End Property


    
'输入框的name属性
    <Category("Design"), DefaultValue("StartDate")> Property FormName() As String
        
Get
            
Return _name
        
End Get
        
Set(ByVal Value As String)
            _name 
= Value
        
End Set
    
End Property


    
'控件的ID
    <Category("Design"), DefaultValue("DCControl")> Property IDName() As String
        
Get
            
Return _id
        
End Get
        
Set(ByVal Value As String)
            _id 
= Value
        
End Set
    
End Property


    
Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)
        content 
= content.Replace("IDName", IDName)
        content 
= content.Replace("FormName", FormName)
        content 
= content.Replace("IDTEXT", Text)
        content 
= content.Replace("INPUTCLASS", ClassInput)
        content 
= content.Replace("BUTTONCLASS", ClassButton)
        output.
Write(content)
    
End Sub


    
Private Sub DateControl_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles MyBase.Load
        Page.RegisterStartupScript(
"DateControl""<script language='javascript' src=/js/DateControl.js></script>")
    
End Sub

End Class


如果页面中有多个日期控件,就需要给它们设定不同的FormName和IDName了。
DateControl.js文件内容:

document.write("<iframe id=DateControlSelect src=\"/js/DateControl.htm\" style=\"position:absolute; visibility:hidden;width:175px; height:182px; z-index:10; \" scrolling=no  frameborder=0>")

var DateControlNowID = "";

function ShowDateControl()
{
    
if(event.srcElement.type == "button")
    {
        sTemp 
= event.srcElement.id.substr(0, event.srcElement.id.length - 6)
    }
    
else if(event.srcElement.type == "text")
    {
        sTemp 
= event.srcElement.id.substr(0, event.srcElement.id.length - 5)
    }
    
    document.all.DateControlSelect.style.left 
= event.x
    document.all.DateControlSelect.style.top 
= event.y
    
if(DateControlNowID == sTemp)
    {
        
if(document.all.DateControlSelect.style.visibility == "hidden")
        {
            document.all.DateControlSelect.style.visibility 
= "visible"
        }
        
else
        {
            document.all.DateControlSelect.style.visibility 
= "hidden"
        }
    }
    
else
    {
        document.all.DateControlSelect.style.visibility 
= "visible"
        DateControlNowID 
= sTemp
    }
}

function FillDateControl(iMonth)
{
    inputObject 
= eval("document.all." + DateControlNowID + "Input")
    
if(DateControlTableHead.rows[0].cells[1].innerText == "")
    {
        dt 
= new Date()
    }
    
else
    {
        stemp 
= DateControlTableHead.rows[0].cells[1].innerText
        dt 
= new Date(parseInt(stemp.substring(0, stemp.indexOf("-"))), parseInt(stemp.substring(stemp.indexOf("-"+ 1, stemp.length)) - 1 + iMonth, 1)
    }
    DateControlTableHead.rows[
0].cells[1].innerText = dt.getYear() + "-" + (dt.getMonth() + 1)
    dtStart 
= new Date(dt.getFullYear(), dt.getMonth(), 1)
    dtNext 
= new Date(dt.getFullYear(), dt.getMonth() + 11)
    iStartDay 
= dtStart.getDay()
    i 
= 0
    j 
= 1
    
for(; i < 7*6; i++)
    {
        
if((i % 7== 0 && i != 0)
        {
            j
++
        }
        DateControlTableContent.rows[j].cells[i 
% 7].innerText = ""
        DateControlTableContent.rows[j].cells[i 
% 7].bgColor = "white"
    }
    i 
= 0
    iDay 
= 1
    j 
= 1
    iDayCount 
= (dtNext - dtStart) / 24 / 60 / 60 / 1000
    dtNow 
= new Date()
    
for(; i<iDayCount; i++)
    {
        iDay 
= i + iStartDay + 6
        
if((iDay % 7== 0 && iDay != 1)
        {
           
if(i != 0 || iStartDay != 1)
           {
               j
++
           }
        }
        stemp 
= dt.getFullYear() + "-" + (dt.getMonth()+1).toString() + "-" + (i + 1).toString()
        DateControlTableContent.rows[j].cells[iDay 
% 7].innerHTML = "<a href='javascript:top.ChangeDayDateControl(\"" + stemp + "\");' >"  + (i + 1).toString() + "</a>"
        
if(inputObject)
        {
            
if(stemp == inputObject.value || (inputObject.value == "" && (i + 1== dtNow.getDate() && dtNow.getMonth() == dt.getMonth() && dtNow.getFullYear() == dt.getFullYear()))
            {
                DateControlTableContent.rows[j].cells[iDay 
% 7].bgColor = "red"
            }
        }
        
else
        {
            
if(((i + 1== dtNow.getDate() && dtNow.getMonth() == dt.getMonth() && dtNow.getFullYear() == dt.getFullYear()))
            {
                DateControlTableContent.rows[j].cells[iDay 
% 7].bgColor = "red"
            }
        }
    }
}
function ChangeDayDateControl(sTemp)
{
    eval(
"document.all." + DateControlNowID + "Input.value = sTemp")
    FillDateControl(
0)
    document.all.DateControlSelect.style.visibility 
= "hidden"
}


DateControl.htm文件内容:


js,htm文件都要放在站点根目录下的js目录中。
控件界面还有些粗糙。
另外还有个Bug:定位上如果滚动条没在开始位置,日期控件就不能显示在预定位置了。如果有朋友能帮忙改进的话,非常感谢。