请教各位高手一个关于.net2005的gridview的问题

knight990 2008-02-26 02:27:03
我在网页中制作了一个gridview,其中一列是按钮列(此列已有click事件)

现在我需要实现如下的功能:1)单击此列某个cells后能在此cells右下方出现关于点击内容的“详细说明窗口”(可以是窗口也可以是其他);2)当鼠标再点击“详细说明窗口”以外的区域时,这个“说明窗口自动消失”

有哪位大侠能帮我解决一下问题马,很急!,小弟,万分感谢
...全文
1491 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyblackhole 2008-03-22
  • 打赏
  • 举报
回复
学习
knight990 2008-02-27
  • 打赏
  • 举报
回复

感谢lishijie910123,Sandy945 两位给我提供的帮助,Sandy945的方法十分好用,再次深表感谢!
lovehongyun 2008-02-27
  • 打赏
  • 举报
回复
如果想实现简单的提示功能可以用ToolTip
这个是最简单可行的.
lovehongyun 2008-02-27
  • 打赏
  • 举报
回复
我给的是主要代码.你整理一下就OK了.结贴吧.


<head runat="server">
<title>无标题页</title>
<script language="javascript" type="text/javascript">

function imgBtnUserMoveOnClick ()
{
//alert(window.event.clientX);
document.all.windowMoveing.style.left =window.event.clientX-100;
windowMoveing.style.top =window.event.clientY-80;
windowMoveing.style .display ='';

return false;
}
//隐藏
function moveCancer()
{
windowMoveing.style .display ='none';
}
</script>

..............
.................
..............
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" >
</asp:GridView>



<div id="windowMoveing" style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; DISPLAY: none; BACKGROUND: #ffffff; BORDER-LEFT: #000000 1px solid; WIDTH: 200px; BORDER-BOTTOM: #000000 1px solid; POSITION: absolute; HEIGHT: 70px; TEXT-ALIGN: center">




GridView1_RowDataBound事件里:

btn.Attributes["onclick"] ="return imgBtnUserMoveOnClick();
yanyysoft 2008-02-27
  • 打赏
  • 举报
回复
6L正解,用ToolTip
阿非 2008-02-27
  • 打赏
  • 举报
回复

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Temp.aspx.cs" Inherits="Temp" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script language="javascript" type="text/javascript">
function show(obj)
{
var table=document.getElementById('GridView1');
var top=table.offsetTop+obj.offsetTop+obj.offsetHeight-2;
var left=table.offsetLeft+obj.offsetLeft+obj.offsetWidth+10;

var div=document.getElementById('detailsDiv');
div.style.display='';

div.style.top = top + "px"
div.style.left = left + "px";
div.style.backgroundColor="red";
div.focus();

}

//onload='getTime()'
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" >
</asp:GridView>
<div id='detailsDiv' style="position:absolute;display:none" onBlur='javascript:this.style.display="none";'>test</div>
</div>
</form>
</body>
</html>




using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;


public partial class Temp : System.Web.UI.Page
{
protected ICollection CreateDataSource()
{

System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("学生班级", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("学生姓名", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("语文", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("数学", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("英语", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("计算机", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("布尔", typeof(System.Boolean)));

for (int i = 0; i < 11; i++)
{
System.Random rd = new System.Random(Environment.TickCount * i); ;
dr = dt.NewRow();
dr[0] = "班级" + i.ToString();
dr[1] = "学生" + i.ToString();
dr[2] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[3] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[4] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[5] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[6] = i % 2 == 0 ? true : false;
dt.Rows.Add(dr);
}
System.Data.DataView dv = new System.Data.DataView(dt);

return dv;
}


protected void Page_Load(object sender, EventArgs e)
{
GridView1.DataSource = CreateDataSource();
GridView1.DataBind();

}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string str = "show(this);document.getElementById('detailsDiv').innerHTML='当前选择行是" + e.Row.RowIndex;
str += "<br>班级:" + e.Row.Cells[0].Text;
str += "<br>姓名:" + e.Row.Cells[1].Text;
str += "<br>语文:" + e.Row.Cells[2].Text;
str += "<br>数学:" + e.Row.Cells[3].Text;
str += "<br>英语:" + e.Row.Cells[4].Text;
str += "<br>计算机:" + e.Row.Cells[5].Text;
str += "';";
e.Row.Cells[1].Attributes.Add("onclick", str);
}
}
}

阿非 2008-02-27
  • 打赏
  • 举报
回复
有点困了,睡醒给你写个demo
changjiangzhibin 2008-02-26
  • 打赏
  • 举报
回复
加个鼠标悬停事件
cat_hsfz 2008-02-26
  • 打赏
  • 举报
回复
JavaScript吧。
lishijie910123 2008-02-26
  • 打赏
  • 举报
回复
直接用ToolTip属性啊,
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
DataRowView mydrv;
string gIntro;
if (GridView1.PageIndex == 0)
{
mydrv = myds.Tables["飞狐工作室"].DefaultView[i];//表名
gIntro = Convert.ToString(mydrv["家庭住址"]);//所要处理的字段
GridView1.Rows[i].Cells[3].Text = SubStr(gIntro, 2);
}
else
{
mydrv = myds.Tables["飞狐工作室"].DefaultView[i + (5 * GridView1.PageIndex)];
gIntro = Convert.ToString(mydrv["家庭住址"]);
GridView1.Rows[i].Cells[3].Text = SubStr(gIntro, 2);
GridView1.Rows[i].Cells[3]. ToolTip=gIntro;
}
}

调用的方法:

public string SubStr(string sString, int nLeng)
{
if (sString.Length <= nLeng)
{
return sString;
}
string sNewStr = sString.Substring(0, nLeng);
sNewStr = sNewStr + "...";
return sNewStr;
}
roycelwh 2008-02-26
  • 打赏
  • 举报
回复
基本浮动层+javascript可以解决
Pig23 2008-02-26
  • 打赏
  • 举报
回复
js实现,在网上找个js的这种动作(点击一个钮弹出一个层,点击其它地方层消失,要支持递归),然后自己改改嵌在gridview里
xh831213 2008-02-26
  • 打赏
  • 举报
回复
直接用Cell的ToolTip就好了
先给相应的Cell的ToolTip附上相应的“详细说明”
当鼠标移动到这个才Cell的时候,自动就会显示 详细说明窗口 了
knight990 2008-02-26
  • 打赏
  • 举报
回复
有那位大哥遇到过同样的需求吗,最好能给些代码看看,感谢
virusswb 2008-02-26
  • 打赏
  • 举报
回复
ls的搞错了
他不是要实现详细信息的显示啊
他只是要显示提示,然后提示消失
div吧
lihongdian 2008-02-26
  • 打赏
  • 举报
回复
拖一个DetailView,设置一下传递的DataKey.from gridview control.
然后在DetailView查询DataKey的数据
Nash_exe 2008-02-26
  • 打赏
  • 举报
回复
javascript
lyangl 2008-02-26
  • 打赏
  • 举报
回复
学习中...,帮你顶顶

62,050

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧