关于DataGrid的问题 这样不太好吧?那样使用起来觉得很麻烦。不如使用ToolTip属性来的方便 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那就使用Titlein itemdatabindere.Item.Cells[2].Attributes.Add("title","详细信息"); 需要显示的是这条记录的一个表格,比较复杂,还要应用一些样式,用ToolTip好像不是太好。 或者使用Text='<%#Show(DataBinder.Eval(Container.DataItem,"value"))%>' title='<%#DataBinder.Eval(Container.DataItem,"value")%>'public void Show(object obj){string str=obj.Tostring();return str.substring(0,10)+"....";} 类似于这一种:首先显示一个列表:ID ENGINEER NAME Sex Department 1 Zhang 张三 男 部门12 Liu 刘某 女 部门2当鼠标移动到1时,出现一个表格 ID: 1 ENGINEER: Zhang Name 张三 Sex 男.............. 在javascript的OnMouseOver事件中,执行一个javascript函数,将要显示的内容作为参数传递过去在这个javascript函数中,直接将参数里的内容显示到指定的表格 把每个详细表格 先取出来,放在层里,隐藏起来,等鼠标挪动到相应的条时显示相应的层。可以在DataGrid里模板列里放置<asp:Panel...> 具体做法你可以参考下面的一个页面以及他实现的方法(纯js的)非常有用的:http://www.dynamicdrive.com/dynamicindex5/popinfo.htm 比如点击单元格的一个 linkbutton 来显示detail 内容,aspx 大概如:<ItemTemplate><asp:LinkButton ID="lnkShow" CausesValidation=False Runat="server" OnClick="ShowMsg" CommandName='<%# DataBinder.Eval(Container, "DataItem.ID") %>'><span title="Click to show " class="elide-label" style="width:400;cursor:hand"><%# DataBinder.Eval(Container, "DataItem.MsgTitle").ToString().Trim()%></span></asp:LinkButton></ItemTemplate>在 ShowMsg 里实现, 大概如:public void ShowMsg(object sender, EventArgs e){ LinkButton lnkShow = (LinkButton)sender; TableCell td = (TableCell)lnkShow.Parent; string key = lnkShow.CommandName.ToString(); if(ViewState["ShowMsg" + key] == null) { DSMessages.MessagesRow row = (DSMessages.MessagesRow)dsLargerMsg.Messages.Select("ID =" + key)[0]; TextBox txt = new TextBox(); txt.ID = "txt_" + key; txt.CssClass = "msgContent"; txt.ReadOnly = true; txt.TextMode = TextBoxMode.MultiLine; txt.Text = row.Msg.Trim(); //这里显示你的内容 Panel pnlMsg = new Panel(); pnlMsg.ID = "lab_" + key; pnlMsg.CssClass = "msgBackground"; pnlMsg.Controls.Add(txt); td.Controls.Add(pnlMsg); string strScript= @" <script language=javascript> var txt = document.getElementById(""{0}"") if(screen.width == 1024) txt.style.width = 620; else txt.style.width = 380; </script>"; td.Controls.Add(new LiteralControl(string.Format(strScript, lnkShow.ClientID.Replace("lnkShow", "")+"txt_" + key)));}见效果http://www.me65.com/Pages/Message/Messages.aspx 如何才能一下加载如此多的点,且拖动时不卡 RedirectFromLoginPage 的 原理?源码? 怎么能动态加载用户控件啊! 监控用户操作问题 为什么找不到控件 C#2005 中连接字符串的问题。 RSA.ToXmlString(false)是啥意思? 100分求电子版《asp.net开发答疑200问》 Access的参数查询问题? PetShop3.0安装后出现运行错误:用户 'NT AUTHORITY\NETWORK SERVICE' 登录 问个简单问题:为什么服务器控件浏览时显示不出来? 一个按钮点击后怎么实现弹出一个窗口
Text='<%#Show(DataBinder.Eval(Container.DataItem,"value"))%>' title='<%#DataBinder.Eval(Container.DataItem,"value")%>'
public void Show(object obj)
{
string str=obj.Tostring();
return str.substring(0,10)+"....";
}
ID ENGINEER NAME Sex Department
1 Zhang 张三 男 部门1
2 Liu 刘某 女 部门2当鼠标移动到1时,出现一个表格
ID: 1
ENGINEER: Zhang
Name 张三
Sex 男
..............
在这个javascript函数中,直接将参数里的内容显示到指定的表格
等鼠标挪动到相应的条时显示相应的层。
可以在DataGrid里模板列里放置<asp:Panel...>
http://www.dynamicdrive.com/dynamicindex5/popinfo.htm
aspx 大概如:
<ItemTemplate><asp:LinkButton ID="lnkShow" CausesValidation=False Runat="server" OnClick="ShowMsg" CommandName='<%# DataBinder.Eval(Container, "DataItem.ID") %>'>
<span title="Click to show " class="elide-label" style="width:400;cursor:hand">
<%# DataBinder.Eval(Container, "DataItem.MsgTitle").ToString().Trim()%>
</span>
</asp:LinkButton></ItemTemplate>在 ShowMsg 里实现, 大概如:
public void ShowMsg(object sender, EventArgs e)
{
LinkButton lnkShow = (LinkButton)sender;
TableCell td = (TableCell)lnkShow.Parent;
string key = lnkShow.CommandName.ToString(); if(ViewState["ShowMsg" + key] == null) {
DSMessages.MessagesRow row = (DSMessages.MessagesRow)dsLargerMsg.Messages.Select("ID =" + key)[0]; TextBox txt = new TextBox();
txt.ID = "txt_" + key;
txt.CssClass = "msgContent";
txt.ReadOnly = true;
txt.TextMode = TextBoxMode.MultiLine;
txt.Text = row.Msg.Trim();
//这里显示你的内容
Panel pnlMsg = new Panel();
pnlMsg.ID = "lab_" + key;
pnlMsg.CssClass = "msgBackground";
pnlMsg.Controls.Add(txt); td.Controls.Add(pnlMsg);
string strScript= @"
<script language=javascript>
var txt = document.getElementById(""{0}"")
if(screen.width == 1024)
txt.style.width = 620;
else
txt.style.width = 380;
</script>";
td.Controls.Add(new LiteralControl(string.Format(strScript, lnkShow.ClientID.Replace("lnkShow", "")+"txt_" + key)));}
见效果
http://www.me65.com/Pages/Message/Messages.aspx