分享
 
 
 

如何实现可以带详细表格的DropDownList

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

本文详细介绍了如何实现在点击DropDownList的时候弹出DataGrid,然后从DataGrid里面选择相应的项。

很早就发现在网上有很酷的下拉选择框,今天我在这里也写一个,该方法旨在说明问题的一个解决方法,该方法可以扩展为自定义控件,由于时间有限所以在这里我只提供一个该方法的页面实现。当然你可以发挥你的才能作出更漂亮的。

问题描述:我们在使用DropDownList的时候经常会碰到这样的问题(至少我碰到了),在一个很小的区域显示一个比较复杂的内容,希望让选择的人对要选择的东西有比较清晰的认识,我们需要在点击下拉框的时候可以显示给用户非常详细的信息,可是由于布局的限制或者由于下拉框本身的限制,我们很难做到。

解决方案:我们希望有一个层来显示一个丰富的内容,既然是丰富的内容,我们首先想到的应该是DataGrid控件,那么好,我们就用DataGrid和TextBox以及Button来实现该功能。

需要了解的知识:一点点js的东西,一点点ASP.NET的东西,还有一点点耐心

下面是代码:

我们需要一个层用来放我们的DataGrid,我们叫他divParent。代码如下:

<div id="divParent" style="OVERFLOW:auto;POSITION:absolute;HEIGHT:300px;"</div

接着我们需要一个TextBox和一个Button,TextBox是服务器控件,Button是一个客户端控件代码如下:

<asp:TextBox id="TextBox1" runat="server"</asp:TextBox

<INPUT type="button" value="6" style="FONT-FAMILY: marlett" onclick="ShowDetail('TextBox1','grdContent')"

我们将Button的字体设置成marlett这样可以使用“6”来显示一个下拉箭头当然你也可以使用一个图片。

接着就是DataGrid了,DataGrid的代码如下:

<div style='DISPLAY:none'

<asp:DataGrid id="grdContent" runat="server" ShowHeader="False" BackColor="#FFFFFF"</asp:DataGrid

</div

我们使用了一个层来隐藏该DataGrid,这样用户就看不到这个DataGrid了,只有在选择的时候才显示该DataGrid。

此处还可以使用PowerDataGrid来显示一个漂亮的DataGrid对象,同时可以固定表头。(有关PowerDataGrid请到www.foxhis.com/powermjtest/处下载)

固定表头的DataGrid的实现可以参考我的另一篇文章(http://www.csdn.net/Develop/read_article.asp?id=25538)

上面是客户端的表示,下面就是为了实现该效果而做的客户端逻辑,该逻辑由3个js函数实现。代码如下:

<SCRIPT LANGUAGE="JavaScript"

// 显示datagrid提供详细内容

function ShowDetail(txt,grd){

var datagridParent = document.getElementById('divParent');//首先找到datagrid的容器

var txtobj = document.getElementById(txt);//找到需要需要显示选择内容的TextBox

var datagrid = document.getElementById(grd);//找到DataGrid呈现的客户端表格

// 下面就是显示datagrid和隐藏datagrid时候做的显示开关

if(datagridParent.innerHTML == ''){

document.getElementById('divParent').innerHTML = datagrid.outerHTML;

}

else{

HideLayer();

}

// 定位要显示的层的位置

document.getElementById('divParent').style.pixelLeft=txtobj.offsetLeft;

document.getElementById('divParent').style.pixelTop=txtobj.offsetTop+txtobj.offsetHeight;

}

// 当选择表格中的行的时候将感兴趣的内容显示到文本框中

// txt显示内容的目标控件,row用户点击的行对象,colID用户要显示的列的内容

// 使用row和ColID可以定位一个单元格

function GetRowData(txt,row,colID){

var txtobj = document.getElementById(txt);

txtobj.value = row.cells[colID].innerText;

HideLayer();//选择完以后隐藏层

}

// 隐藏层

function HideLayer(){

document.getElementById('divParent').innerHTML = '';

}

</SCRIPT

代码的详细解释请看代码注释。

下面是CS部分的代码,首先我们需要给DataGrid绑定数据代码,我们在Page_Load里面写如下代码:

if(!this.IsPostBack){

SqlConnection con = new SqlConnection("server=localhost;database=pubs;uid=sa;pwd=sa;");

SqlDataAdapter da = new SqlDataAdapter("select au_lname+' '+au_fname,city from authors",con);

DataSet ds = new DataSet();

da.Fill(ds);

this.grdContent.DataSource = ds.Tables[0];

this.grdContent.DataBind();

}

最后我们需要在该DataGrid绑定数据的时候做点什么,下面是我们做的事情,代码如下:

private void grdContent_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) {

e.Item.Attributes.Add("onmouseover", "this.bgColor='#f1f1f1'");

e.Item.Attributes.Add("onmouseout", "this.bgColor='#ffffff'");

e.Item.Attributes.Add("onclick", "GetRowData('"+this.TextBox1.ClientID+"',this,1)");

}

我们首先需要给用户一个醒目的鼠标移动的效果所以我们使用将onmouseover和onmouseout指定到tr对象上,之后我们将给tr编写onclick

事件相应所要激发的函数。(tr是DataGrid呈现在客户端以后的行对象)

好了,到此我们的程序就写完了。

对该工程有任何问题请发送邮件到wu_jian830@hotmail.com。如果您需要源代码,您也可以发送邮件。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有