当前位置:编程学习 > C#/ASP.NET >>

如何让GridView行中显示不完的内容鼠标放上去后,能弹出显示

GridView行中字段显示不完的内容,可以隐藏多余部分。但想把鼠标移过去时,能弹出显示,不知道有没有方法实现?谢谢! --------------------编程问答-------------------- tooltip? --------------------编程问答-------------------- 弹出显示
------------》
什么意思??是要Title样子还是MessageBox
--------------------编程问答-------------------- 使用 substring 控制显示,使用 tooltip 显示提示内容 --------------------编程问答-------------------- 很简单就是tooltip! --------------------编程问答-------------------- 不是每一行都可以显示对应字段的tooltip吧。
我是要移动到对应字段内容上后,可以显示出全部内容。最好浮出一个小窗口显示。鼠标离开后,显示内容消失。谢谢关注、指导 --------------------编程问答-------------------- 关注```UP --------------------编程问答-------------------- 道理就是上边的各位的道理 我贴下源码
GridView的ItemTemplate
你要显示的数据应该是Label

<asp:Label ID="lbl_Title" runat="server" Text='<%# (Eval("N_Title").ToString()).Length>30 ?((Eval("N_Title")).ToString()).Substring(0,30)+"...":Eval("N_Title") %>' ToolTip='<%# Eval("N_Title")%>'></asp:Label>

这个是这样  当N_Title大于30就前面30位+...
鼠标放上去显示所有信息 --------------------编程问答-------------------- 用微软新出的ajax.net来做,very easy --------------------编程问答-------------------- 用微软新出的ajax.net来做,very easy
-------
可以说的具体点吗 --------------------编程问答-------------------- title不能满足吗? --------------------编程问答-------------------- 用微软新出的ajax.net来做,very easy

怎么做呢,我也想知道,当鼠标移动到gridview的行时候,显示这行对应的图片 --------------------编程问答-------------------- title属性啊。。我晕,想那么复杂 --------------------编程问答-------------------- GridView后台模板列绑定
<asp:TemplateField HeaderText="内容" >
<ItemTemplate>
<asp:Label ID="lbPlan_Content" runat="server" Text='<%#SubString(DataBinder.Eval(Container,"DataItem.Plan_Content").ToString())%>' ToolTip='<%#DataBinder.Eval(Container,"DataItem.Plan_Content")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
前台定义SubString方法:
    protected string SubString(string substr)
    {
        if (substr.Length > 5)
        {
            return substr.Substring(0, 5) + "...";
        }
        return substr;
    }
GridView绑定的字段中小于5字符正常显示 ,如果字符大于5,只显示5个字符和省略符,鼠标放上去,全部显示。


--------------------编程问答-------------------- 我也等这个问题呢?不过按楼上那位仁兄的方法 我要是点击gridview里某一行的修改 要把这一行的值分别赋给文本框 那怎么做呢?我文本框里显示的肯定是所有的内容阿。
--------------------编程问答-------------------- 楼主说的不是文字过长,截取字符串。
而是在tooltip上面显示图片。 --------------------编程问答-------------------- 如何使用asp.net ajax中的controltookit中的 PopupControlExtender 控件来实现一些特殊的效果,比如文中举了如何在一个GRIDVIEW中,当鼠标移动到某条记录上时,可以显示这条记录的detail信息,这样就不用象以前那样,又要重新打开一个新的窗口去看detail的信息了.下面是实现的要点.

 首先,添加controltoolkit控件中的popupcontrolextender控件,然后点选右上角的智能标记,在弹出的窗口中,选择“Add Dynamic Populate Page Method”,之后会自动生成相关的事件,是AJAX在POSTBACK后触发的事件,但奇怪的事,我装的最新版本的controltookit中,并没有发现这个可以功能,只能在代码中写入如下了
 [System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
public static string GetDynamicContent(string contextKey)
{
  return default(string);
}
其中注意的是,contextKey这个不能改变。这个方法中的代码等下再写
  之后再设置popupcontrolextender控件的一些<ajaxToolkit:PopupControlExtender
  ID="PopupControlExtender1"
  runat="server"
  DynamicServiceMethod="GetDynamicContent"
  DynamicContextKey='<%# Eval("EmployeeID") %>'
  DynamicControlID="Panel1"
  TargetControlID="Image1"
  PopupControlID="Panel1"
  Position="right">
</ajaxToolkit:PopupControlExtender>


  其中dynamicservicemethod指定了刚才用来处理postback的方法,dynamiccontextkey这里就是每一条记录的ID了(这里是employeeID,因为用户将鼠标移动到这记录时,要根据这条记录的ID去取相应的detail记录,一对多关系嘛)
 而dynamiccontrolID是指定了用一个panel控件来显示这些detail的信息,targetcontrolid则是当用户移动到某个图片时,再旁边弹出一个PANNEL来显示其detail信息,详细的用法为

TargetControlID:要和它结合在一起完成一定功能的目标控件ID.
  PopupControlID:显示弹出窗口的控件ID
  Position:是一个可选项设置,指弹出窗口相对于目标控件的位置,它的取值有:Left、Right、Top、Bottom、Center。
  CommitProperty:是一个可选项设置,用于把弹出框的返回结果赋给控件相应属性的属性名称。
  CommitScript:是一个可选项设置,在设置弹出框返回的结果后执行的附加脚本。
  OffsetX/OffsetY:相对于弹出窗口默认位置再偏移一定像素点数作为它的弹出位置,这个偏移量由该属性设置,单位是像素点数。

接下来,我们完成postback的方法,
[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
public static string GetDynamicContent(string contextKey)
{

伊图教程网[www.etoow.com]
http://www.etoow.com/html/2007-08/1187222100.html
  StringBuilder sTemp = new StringBuilder();

  TerritoriesBLL oTerritories = new TerritoriesBLL();
  Northwind.EmployeeTerritoriesDataTable ts = oTerritories.SelectTerritories(Convert.ToInt32(contextKey));

  if (dt.Rows.Count > 0)
  {
   sTemp.Append("<table>");
   sTemp.Append("<tr><td><b>Territories:</b></td></tr>");

   foreach (Northwind.EmployeeTerritoriesRow t in ts)
   {
     sTemp.Append("<tr><td>" + t.Territory + "</td></tr>");
   }

   sTemp.Append("</table>");
  }
  else
   sTemp.Append("<i>This employee covers no territories...</i>");

  return sTemp.ToString();
}

 在文中,只不过用将detail的信息数据返回,然后组织成简单的字符串的形式而已了
 最后,由于我们是想实现当鼠标移动到某一条记录旁边的一个图时,用一个pannel显示出其详细信息框,因此要在gridview的
row_created事件中写入
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
  if (e.Row.RowType == DataControlRowType.DataRow)
  {
   Image i = (Image)e.Row.Cells[1].FindControl("Image1");
   i.Attributes.Add("onmouseover", "Panel1.style.display='inline';this.click();");
   i.Attributes.Add("onmouseout", "Panel1.style.display='none';");
  }
}
表示如果是datarow的话,则往其中每一行记录旁的图形(文中每行的记录,都有个图片image1)的onmouseover,onmouseout事件里添加相关的javascript事件,这里会把要显示detail记录的panel框显示出来,同时会调用image1的click()事件,而click()事件的调用则会回调GetDynamicContent方法,取得ajax postback()后返回的数据了

--------------------编程问答-------------------- 学习 --------------------编程问答-------------------- thanks ! --------------------编程问答-------------------- 都说对啦 --------------------编程问答--------------------
引用 7 楼 baoker 的回复:
道理就是上边的各位的道理   我贴下源码
GridView的ItemTemplate
你要显示的数据应该是Label

<asp:Label   ID= "lbl_Title "   runat= "server "   Text= ' <%#   (Eval( "N_Title ").ToString()).Length> 30   ?((Eval( "N_Title ")).ToSt……


逗是这个 --------------------编程问答-------------------- 后台处理字符串截取问题  再在那一列条件一客户端js事件  穿一个参数(完整的内容)   再在js里动态添加一个层  获取该列的位置  就可以设置层弹出的位置  把穿过来的参数添加到层里面就OK了  鼠标移开时层remove掉 --------------------编程问答-------------------- itemDataBound()事件里面处理添加那个js --------------------编程问答-------------------- 顶7楼 --------------------编程问答-------------------- ToolTip不行?你的数据会超过很多? --------------------编程问答-------------------- 行绑定里面处理一下:

            e.Row.Cells[i].Text = "<a href=\"#\" style=\"color:#0000ff\" title=\"" + e.Row.Cells[i].Text + "\" >" + e.Row.Cells[i].Text.Substring(0, 16) + "...</a>";

用一个<a>标签显示内容,title的内容绑定的是所有的内容,<a>标签显示的内容是你截取后的内容,鼠标放上去就显示了title的内容 --------------------编程问答-------------------- 用JS实现比较好
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,