孟宪会ID:net_lover
903238次访问,排名31好友199人,关注者0
http://dotnet.aspx.cc/
【声明:各位好,由于系统“添加好友”功能只能添加200个,后来的朋友不能加入,见谅!!!】
net_lover的文章
原创 245 篇
翻译 2 篇
转载 5 篇
评论 840 篇
孟宪会的公告
欢迎光临!您在阅读的过程中有任何建议或者意见,请发邮件或者留言,合作愉快!
最近评论
linxi1151:牛,顶下
linxi1151:牛,顶下
linxi1151:牛,顶下
study1014:呵呵,解决了,谢谢!
study1014:js代码不起作用啊
文章分类
收藏
    相册
    文章用图
    【孟子E章】站点
    【孟子E章】站点(RSS)
    【孟子E章】网摘(RSS)
    【孟子E章】网站(RSS)
    Silverlight 1.0 SDK 中文版
    Silverlight 1.0 SDK 中文版
    【网上邻居】
    .Net开发资源中心
    【兔子】专栏
    AppleVB 主页
    Estyle(靳田)之狂想手扎
    huahaoyueyuan
    JavaProgramers的专栏
    意玺的BLOG
    最爱白菜
    枕善居VB.NET源码博客
    美丽眼睛看世界
    阿赖
    存档
    订阅我的博客
    XML聚合  FeedSky

    原创 带图片的,多列的DropDownList的实现收藏

    新一篇: 精彩总结:★加密网页破解大法★[续] | 旧一篇: 利用xslt对xml进行缩进格式化处理

    下面是模仿的DropDownList的效果,支持图片,多列,换行等。查看例子

    WebDropDownList.aspx

    <%@ Page language="c#" Codebehind="WebDropDownList.aspx.cs"validateRequest="false"
     AutoEventWireup="false" Inherits="eMeng.WebDropDownList" %>
    <HTML>
    <HEAD>
    <title>模拟下拉列表框</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <style>BODY {
    FONT: 12px 宋体
    }
    TD {
    FONT: 12px 宋体
    }
    DIV {
    FONT: 12px 宋体
    }
    LABEL {
    PADDING-RIGHT: 0px; PADDING-LEFT: 4px; PADDING-BOTTOM: 0px; PADDING-TOP: 3px; HEIGHT: 19px
    }
    .link_box {
    CURSOR: default; TEXT-ALIGN: left
    }
    .link_head {
    BORDER-RIGHT: 2px inset; BORDER-TOP: 2px inset; BORDER-LEFT: 2px inset; WIDTH: 100%;
    BORDER-BOTTOM: 2px inset; HEIGHT: 23px
    }
    .link_text {
    PADDING-LEFT: 2px; BACKGROUND: #fff
    }
    .link_arrow0 {
    BORDER-RIGHT: 2px outset; BORDER-TOP: 2px outset; BACKGROUND: buttonface;
    FONT: 14px marlett; BORDER-LEFT: 2px outset; WIDTH: 22px;
     BORDER-BOTTOM: 2px outset; HEIGHT: 100%; TEXT-ALIGN: center
    }
    .link_arrow1 {
    BORDER-RIGHT: buttonshadow 1px solid; PADDING-RIGHT: 0px;
    BORDER-TOP: buttonshadow 1px solid; PADDING-LEFT: 2px;
    BACKGROUND: buttonface; PADDING-BOTTOM: 0px; FONT: 14px marlett;
    BORDER-LEFT: buttonshadow 1px solid; WIDTH: 22px; PADDING-TOP: 2px;
    BORDER-BOTTOM: buttonshadow 1px solid; HEIGHT: 100%; TEXT-ALIGN: center
    }
    .link_value {
    BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; FILTER: alpha(opacity:0);
    VISIBILITY: hidden; OVERFLOW-X: hidden; OVERFLOW: auto; BORDER-LEFT: 1px solid;
    BORDER-BOTTOM: 1px solid; POSITION: absolute
    }
    .link_record0 {
    BORDER-TOP: #eee 1px solid; PADDING-LEFT: 2px; BACKGROUND: #fff;
    WIDTH: 100%; COLOR: #000; HEIGHT: 20px
    }
    .link_record1 {
    BORDER-TOP: #047 1px solid; PADDING-LEFT: 2px; BACKGROUND: #058;
    WIDTH: 100%; COLOR: #fe0; HEIGHT: 20px
    }
    </style>
    <script>
    var dropShow=false
    var currentID
    function dropdown(el){
    if(dropShow){
    dropFadeOut()
    }else{
    currentID=el
    el.style.visibility="visible"
    dropFadeIn()
    }
    }
    function dropFadeIn(){//选单淡入的效果
    if(currentID.filters.alpha.opacity<100){
    currentID.filters.alpha.opacity+=20
    fadeTimer=setTimeout("dropFadeIn()",50)
    }else{
    dropShow=true
    clearTimeout(fadeTimer)
    }
    }
    function dropFadeOut(){//选单淡出的效果
    if(currentID.filters.alpha.opacity>0){
    clearTimeout(fadeTimer)
    currentID.filters.alpha.opacity-=20
    fadeTimer=setTimeout("dropFadeOut()",50)
    }else{
    dropShow=false
    currentID.style.visibility="hidden"
    }
    }
    function dropdownHide(){
    if(dropShow){
    dropFadeOut()
    dropShow=false
    }
    }
    function hiLight(el){//高亮度显示指标位置
    if(dropShow){
    for(i=0;i<el.parentElement.childNodes.length;i++){
    el.parentElement.childNodes(i).className="link_record0"
    }
    el.className="link_record1"
    }
    }
    function CheckMe(el){//替换显示内容
    document.all.text1.innerText=el.innerText
    }
    document.onclick=dropdownHide
    </script>
    </HEAD>
    <body text="#000000" onload="document.all.form1.reset()">
    <div style="padding:10px;border-bottom:2px solid red">模拟下拉框</div>
    <form id="form1" onsubmit="alert(city.value)" runat="server">
    <table>
    <tr>
    <td>
    <div class="link_box" onselectstart="return false" style="WIDTH: 100px">
    <div class="link_head" onclick="dropdown(value1)">
    <table height="100%" cellSpacing="0" cellPadding="0" width="100%" border="0">
    <tr>
     <td>
      <div class="link_text"><nobr><label id="text1">请选择?</label></nobr></div>
     </td>
     <td align="right" width="22">
      <div onmouseup="this.className='link_arrow0'" class="link_arrow0"
      onmousedown="this.className='link_arrow1'" onmouseout="this.className='link_arrow0'">6</div>
     </td>
    </tr>
    </table>
    </div>
    <div class="link_value" id="value1" style="WIDTH: 500px; HEIGHT: 300px">
    <asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" Font-Size="12px" Width="100%"
    ShowHeader="False">
    <Columns>
    <asp:BoundColumn DataField="Title" SortExpression="Title"
     DataFormatString="<img src='http://dotnet.aspx.cc/Images/meng.gif' align='absmiddle'> {0}">
     </asp:BoundColumn>
    <asp:BoundColumn DataField="CreateDate" SortExpression="CreateDate"
     HeaderText="" DataFormatString="{0:yyyy年MM月dd日}"></asp:BoundColumn>
    </Columns>
    </asp:datagrid>
    <div id="mx">
    <div class="link_record0" onmouseover="hiLight(this)"
     onclick="CheckMe(this);document.all.form1.city.value=this.innerText"><label>北京市</label></div>
    <div class="link_record0" onmouseover="hiLight(this)"
     onclick="CheckMe(this);document.all.form1.city.value=this.innerText"><label>上海市</label></div>
    <div class="link_record0" onmouseover="hiLight(this)"
     onclick="CheckMe(this);document.all.form1.city.value=this.innerText"><label>河南省</label></div>
    <div class="link_record0" onmouseover="hiLight(this)"
     onclick="CheckMe(this);document.all.form1.city.value=this.innerText"><label>深圳市</label></div>
    <div class="link_record0" onmouseover="hiLight(this)"
     onclick="CheckMe(this);document.all.form1.city.value=this.innerText"><label>大连市</label></div>
    <div class="link_record0" onmouseover="hiLight(this)"
     onclick="CheckMe(this);document.all.form1.city.value=this.innerText"><label>云南省</label></div>
    </div>
    </div>
    </div>
    </td>
    <td><input type="hidden" value="您尚未选择" name="city"> <input type="submit" value="确定">
    </td>
    </tr>
    </table>
    </form>
    </body>
    </HTML>

    WebDropDownList.aspx.cs

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.OleDb;

    namespace eMeng
    {
    /// <summary>
    /// ShowList 的摘要说明。
    /// </summary>
    public class WebDropDownList : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.DataGrid DataGrid1;

    private void Page_Load(object sender, System.EventArgs e)
    {   
    DataGrid1.Columns[0].ItemStyle.Width = Unit.Pixel(400);
    DataGrid1.Columns[1].ItemStyle.Width = Unit.Pixel(100);
    Data_Bind();
    }

    public void Data_Bind()
    {
    Response.CacheControl = "no-cache";
    Response.Expires = -1;
    try
    {
    string strSQL = "SELECT id,objectGuid,Title,CreateDate,HitCount FROM Document ORDER BY id DESC";
    string cnString = (new Connection()).ConnectionString;
    OleDbConnection cn = new OleDbConnection(cnString);
    cn.Open();
    OleDbCommand cmd = new OleDbCommand(strSQL, cn);
    DataGrid1.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    DataGrid1.DataBind();
    cn.Close();
    cn.Dispose();
    cn = null;
    cmd.Dispose();
    cmd = null;
    }
    catch(OleDbException myOleDbException)
    {
    Response.Write("错误:" + myOleDbException.Message + ":" + myOleDbException.HelpLink);
    Response.End();
    }
    }
    private void DataGrid1_ItemDataBound(object sender,System.Web.UI.WebControls.DataGridItemEventArgs e)
    {

    if( e.Item.ItemIndex != -1 )
    {
    e.Item.Attributes.Add("onmouseover", "this.bgColor='#C1D2EE'");
    e.Item.Attributes.Add("onclick",
    "document.all.text1.innerText=this.cells[0].innerText;document.all.form1.city.value=this.cells[0].innerText;");
    if (e.Item.ItemIndex % 2 == 0 )
    {
     e.Item.Attributes.Add("bgcolor", "#FFFFFF");
     e.Item.Attributes.Add("onmouseout", "this.bgColor=document.getElementById('DataGrid1').getAttribute('singleValue')");
    }
    else
    {
     e.Item.Attributes.Add("bgcolor", "oldlace");
     e.Item.Attributes.Add("onmouseout", "this.bgColor=document.getElementById('DataGrid1').getAttribute('oldValue')");
    }
    }
    else
    {
    DataGrid1.Attributes.Add("oldValue", "oldlace");
    DataGrid1.Attributes.Add("singleValue", "#FFFFFF");
    }
    }
    #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {   
    this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
    this.Load += new System.EventHandler(this.Page_Load);
    }
    #endregion
    }
    }

    发表于 @ 2004年07月29日 17:51:00|评论(loading...)|编辑

    新一篇: 精彩总结:★加密网页破解大法★[续] | 旧一篇: 利用xslt对xml进行缩进格式化处理

    评论

    #gmplayer 发表于2004-12-01 10:38:00  IP:
    TrackBack来自《带图片的,多列的DropDownList的实现 》

    Ping Back来自:blog.csdn.net
    #阿赖 发表于2004-07-30 12:38:00  IP: 218.19.129.*
    你好,咱们做个链接怎么样?如有意请到下面地址留言,谢谢!http://blog.csdn.net/laily/archive/2004/07/22/49296.aspx
    #Fanz2000 发表于2004-08-09 13:10:00  IP: 221.237.70.*
    太牛了!孟子兄
    #Dream 发表于2004-08-13 14:53:00  IP: 218.16.57.*
    你好!
    选择一个ITEM的时候,会出现一个MSGBOX,但是当确定后,选中的ITEM又会变成“请选择”。
    #Lanyd 发表于2004-08-17 17:46:00  IP: 61.141.156.*
    关键点分析:
    1、用CSS将DIV模拟成文本框,真是高人哪!也可见CSS的美化功能是强大得恐怖呀:p
    <div class="link_text" onmouseup="arrow1.className='link_arrow0'" onmousedown="arrow1.className='link_arrow1'" onmouseout="arrow1.className='link_arrow0'"><nobr><label id="text1">请选择?</label></nobr></div>
    注:上面我也加上了脚本处理,孟老大原来的程序是没有的,但我觉得加上后更像dropdown list :)

    2、用CSS特殊字体将DIV和数字模拟成按钮面和箭头,真是高人哪!特殊字体有时确实有出其不意之效
    按钮面 BACKGROUND: buttonface;
    正常按钮立体 BORDER-LEFT: 2px outset; BORDER-TOP: 2px outset; BORDER-RIGHT: 2px outset; BORDER-BOTTOM: 2px outset;
    按下按钮立体 BORDER-LEFT: buttonshadow 1px solid; PADDING-LEFT: 2px;
    BORDER-TOP: buttonshadow 1px solid; PADDING-TOP: 2px;
    BORDER-RIGHT: buttonshadow 1px solid; PADDING-RIGHT: 0px;
    BORDER-BOTTOM: buttonshadow 1px solid; PADDING-BOTTOM: 0px;
    箭头 FONT: 14px marlett; <div id=arrow1>7</div>
    注:我将原来的数字6换成了7,你看看有没有漂亮一些:)

    3.用脚本和CSS实现鼠标按下放开时的按钮动态效果。
    onmouseup="arrow1.className='link_arrow0'"
    onmousedown="arrow1.className='link_arrow1'"

    4. 用表格或div模拟出下拉列表,其实要加入图片前缀很简单。
    asp:BoundColumn和DataFormatString确实强大呀,它会自己决定td的width和将格式化变量外的图像或文字附加到正文中。
    <asp:BoundColumn DataField="Title" SortExpression="Title"
    DataFormatString="<img src='http://dotnet.aspx.cc/Images/meng.gif' align='absmiddle'> {0}">
    当然,我自己将img加入div内也不是不行的嘛:p
    <div class="link_reco
    #Lanyd 发表于2004-08-17 14:33:00  IP: 61.141.156.*
    楼上的真笨哪,你要自己处理选择后的动作呀,楼主只是举个例子罢了
    #Estyle(靳田) 发表于2004-08-24 04:57:00  IP: 221.237.49.*
    没有像楼上一样细看。
    不过陡然间发现这个——“innerText”
    这东西应该是MS专用的吧?一般不建议使用。
    #【孟子E章】 发表于2004-08-24 07:55:00  IP: 218.24.233.*
    是的,mozilla等都只支持innerHTML
    #xiaoyun 发表于2004-09-20 12:00:00  IP: 219.137.137.*
    不错不错
    但是你这个飘不出浏览器窗口呀
    当把浏览器窗口缩很小的时候,下拉框弹出的页面始终还是在ie窗口里面呀
    而一般的用的地方的窗口可能会是很小的哦。
    我做了一个,现在可以了。
    #Carontao 发表于2004-11-05 14:30:00  IP: 211.95.162.*
    惭愧,我这个简单的js怎么出错呢,mozilla和IE都不行:

    <script language="JavaScript">
    function Change() {
    var abc;
    abc = getStyle("aaa");
    abc.innerHTML = "changed";
    }
    </script>


    <h1 align="center" id="aaa">here</h1>
    <p align="center">
    <input name="Button" type="button" onClick="Change()" value="test1">
    </p>
    #Carontao 发表于2004-11-08 10:30:00  IP: 211.95.162.*
    somebodyhelpme~~~~upup
    #lovednet 发表于2005-01-20 15:44:00  IP: 61.237.24.*
    真是太历害了.
    #mp3 发表于2005-03-12 18:19:00  IP: 222.35.87.*
    好例子
    #joe 发表于2006-01-18 15:15:00  IP: 218.75.71.*
    很好,强烈建议做成自定义控件!
    #zhoujoshua 发表于2006-12-28 16:46:24  IP:
    请问老大,怎么解决被div被select遮挡的问题
    #fanlong 发表于2007-09-28 17:18:09  IP: 210.83.203.*
    xiexie~
    #lujianjiang 发表于2008-07-21 12:10:06  IP: 60.190.131.*
    关注
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 孟宪会