datalist上的hyperlink文字获取
图片是一个datalist上的itemtemplate的imge和hyperlink,我想通过mouseover和mouseout事件,当鼠标移动hyperlink上时显示相对应的人的头像,头像是预先设置好和名字在数据库中是对应的。但是我运行时,当鼠标移动到名字上显示的头像都是第一个人的头像。
代码如下:
<ItemTemplate>
<asp:Image ID="Image1" runat="server" Height="16px" ></asp:Image>
<asp:HyperLink id="HyperLink1" runat="server" >[HyperLink1]</asp:HyperLink>
<%--<asp:button id="but1" runat="server" Width="28px" Text="头像" CssClass="ButtonCss" ></asp:button> --%>
</ItemTemplate>
<script>
function GetPos(obj){
var pos=new Object();
pos.x=obj.offsetLeft;
pos.y=obj.offsetTop;
while(obj=obj.offsetParent){
pos.x+=obj.offsetLeft;
pos.y+=obj.offsetTop;
}
return pos;
}
function init() {
var img = window.parent.document.getElementById("headportrait");
if (img.style.display != "none") {
img.style.display = "none";
}
}
function showImg() {
var url = "../../SubModule/user/HeadPortrait/20121117 112144body.gif";
var img = window.parent.document.getElementById("headportrait");
img.style.zIndex="1000";
// img.style.position="absolute";
img.style.width =60;
img.style.height = 60;
// img.style.top=200;
// img.style.left=200;
var hy=document.getElementById("DataList1");
var pos=GetPos(hy);
img.style.left="2px";
img.style.top="2px";
img.src = url;
ShowHeadPortrait()
if (img.style.display == "none") {
img.style.display = "block";
}
}
// Firefox, Opera 8.0+, Safari
var xmlhttp=getXmlhttp();
function ShowHeadPortrait()
{
if(xmlhttp==null)
{
alert("xmlhttp wrong");
}
url="online_user.aspx?c='1'"+Math.random();
xmlhttp.onreadystatechange=stateChange;
xmlhttp.open('get',url,true);
xmlhttp.send(null);
}
function stateChange()
{
if(xmlhttp.readyState==4)
{
if(xmlhttp.responseText!=null)
window.parent.document.getElementById("headportrait").src="../../SubModule/user/"+xmlhttp.responseText;
}
}
ListItemType lit = e.Item.ItemType;
switch (lit)
{
case ListItemType.Item:
HyperLink hl = (HyperLink)e.Item.FindControl("HyperLink1");
/*if (!IsLocalIP() && GetUserIDFromUserName(hl.Text) == Session["UserID"].ToString())
{
hl.ForeColor = Color.Blue;
}*/
hl.Text = e.Item.DataItem.ToString();
//Session["UserID"] = hl.Text;
//Alert(Session["UserID"]);
hl.Target = "main";
hl.NavigateUrl = "javascript:Lin(\"../message/new_message.aspx?type=3&addreess=" + Public.Public_Declare.LogonUserID[e.Item.ItemIndex] + "\")";
hl.ToolTip = "给我发邮件吧";
string url = "",imgurl="";
SqlDataReader drHead = db.ExecuteDataReader("select head_portrait from t_sys_users where id='" + Public.Public_Declare.LogonUserID[e.Item.ItemIndex] + "'", conn);
if (drHead.Read())
{
if (drHead["head_portrait"].ToString() != "")
{
url = drHead["head_portrait"].ToString();
imgurl= "HeadPortrait/" + System.IO.Path.GetFileName(url);
}
}
drHead.Close();
if (Request.QueryString["c"] != null)
{
Response.Write(imgurl);
Response.End();
}
//Response.Write(imgurl);
//Response.End();
hl.Attributes.Add("onmouseover", "showImg()");
hl.Attributes.Add("onmouseout", "init()");
求大神们指点一下。 --------------------编程问答-------------------- 没人帮忙一下啊,自顶 --------------------编程问答-------------------- 当鼠标移动到名字上显示的头像都是第一个人的头像。
==看看参数是否都一样了?如果不是去后台看看。查询对应的头像那出错了。设个断点跟踪下 --------------------编程问答--------------------
查过了,当界面初始化的时候,名字是一次性加载上去的,只要登录的就加载。但是我的头像弹出是根据鼠标移动的时候才运行的,所以它始终获得的是加载的第一个人的名字。 --------------------编程问答-------------------- var url = "../../SubModule/user/HeadPortrait/20121117 112144body.gif";
这里是不是写死了?
鼠标移动时没有传参数? --------------------编程问答--------------------
img.src = url;
ShowHeadPortrait();
这里重新赋值了,所以不会写死的。
补充:.NET技术 , ASP.NET