如何让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 ! --------------------编程问答-------------------- 都说对啦 --------------------编程问答--------------------
逗是这个 --------------------编程问答-------------------- 后台处理字符串截取问题 再在那一列条件一客户端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