下面是模仿的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
}
}
分享到:
相关推荐
为了实现带图片的多列DropDownList,开发者可能会使用ASP.NET的DropDownList控件,并自定义其模板。在ASPX文件中,他们可能通过ItemTemplate标签来定义每一项的结构,包括文字和图片元素。在代码-behind文件中,他们...
在本节内容中,我们将详细探讨Adobe Flex框架中DropDownList组件的应用,从基础创建到设置带图片的下拉选项。Flex是一个开源的框架,广泛用于开发富互联网应用(Rich Internet Applications, RIA)。Flex 4.5是在Adobe...
在这个小项目中,我们主要探讨了几个关键知识点,包括发送邮件及附件、模仿MSN的弹出窗口效果以及实现带有图片和多列的DropdownList。 首先,让我们深入了解一下如何在ASP.NET中实现发送邮件及附件的功能。使用...
实例 实现多个DropDownList控件的联动 实例 动态添加、删除DropDownList控件选项 4.5 单选按钮的应用 实例 性别选择 实例 网络考试系统中单选题答案的选择 4.6 复选框的应用 实例 登录身份选择 实例 网络考试系统中...
GridView控件能够自动绑定到数据源并显示数据,通常包括多行和多列,每列可以包含不同类型的数据显示,如文本、图片或链接等。在本实例中,我们将扩展其功能,使其支持动态添加行,每行内嵌一个DropDownList,这样...
1 带图片的,多列的DropDownList的实现 2 XML2OLEDB范例 3 发送邮件及附件的小例子 4 仿MSN的三种弹出窗口效果范例 5 非数据库数据源实现查询范例 6 服务器端使用RADIO在DATAGRID中得应用 7 ...
实例212 GridView自动求和及合并多列多行 单元格 336 实例213 GridView合并行或列单元格的5种 通用方式 338 实例214 GridView删除数据时弹出确认对话框 (含内容提示) 340 实例215 GridView数据源为空时显示表头和 ...
第10章 Web页面设计 221 10.1 网页外观设计 222 0396 将CSS样式表应用到页面中 222 0397 在页面的源码中直接定义...0495 如何实现带滚动条的Panel面板 290 0496 使用Substitution控件在缓存页面插入内容 290
60.如何实现两个或多个DropDownList控件的联动 61.如何实现ListBox控件选项的上移、下移、添加和删除操作 62.如何实现ListBox控件中选项的双击事件 63.如何动态设置ListBox控件中各选项的背景颜色 64.如何在页面...
通过示例展示如何显示带有水印的图片。 - **示例070**:使用网页控件显示图片。演示如何利用ASP.NET中的Image控件显示图片。 - **示例071**:缩放图片。讲解如何使用C#编程语言调整图片大小。 - **示例072**:...
如何实现两个或多个DropDownList控件的联动 61.如何实现ListBox控件选项的上移、下移、添加和删除操作 62.如何实现ListBox控件中选项的双击事件 63.如何动态设置ListBox控件中各选项的背景颜色 64....
43 <br>0061 树的实现 44 <br>3.2 排序 48 <br>0062 如何实现选择排序算法 48 <br>0063 如何实现冒泡排序算法 49 <br>0064 如何实现快速排序算法 50 <br>0065 如何实现插入排序算法 ...
26. 图片列:在列中显示数据库存储的图片。 27. 导出:导出GridView数据到Excel、CSV等格式。 28. 高级筛选:通过下拉框、日期选择器等提供高级筛选条件。 29. 自定义排序:实现自定义排序算法,满足特殊需求。 ...
13. 联动下拉框:在GridView中嵌入DropDownList,实现联动选择,提高数据关联性。 14. 行选择:添加行选择功能,方便用户选定特定行进行操作。 15. 动态列:根据需求动态生成列,适应不同场景。 16. 搜索功能:...
23. 联动效果:与其他控件(如DropDownList)联动,实现下拉框选择后自动刷新GridView数据。 24. 嵌套GridView:在GridView内部嵌套另一个GridView,用于展示子级数据,构建层级结构。 25. 自定义分页控件:可以...
- **头像选择**:通过 `<asp:DropDownList runat="server" TabIndex="10" AutoPostBack="True" ID="dlPicSelect" onselectedindexchanged="dlPicSelect_SelectedIndexChanged"></asp:DropDownList>` 实现头像的选择...
2. **ListBox** 控件:ListBox显示一个可滚动的项目列表,其主要属性有`Items`集合(存储列表项)、`MultiColumn`(是否开启多列显示)、`SelectionMode`(选择模式,如单选或多选)、`SelectedIndex`(当前选中项的...
当使用下拉框显示页索引时(即PageIndexBoxType=DropDownList时),如果总页数超过80页,将在下拉框中只列出部分页索引而不是全部页索引,以防页数太多导致下拉框选项太多而拖慢页面下载和打开速度。页索引下拉框的...
列表视图通常用于展示多列数据,而树视图则适合展示具有层级关系的数据。开发者可以添加、删除或修改`ListViewItem`或`TreeNode`,并通过各种事件来响应用户操作。 9. **计时器(Timer)**:计时器控件周期性地触发...