在GridView中,我希望某个字段只显示10个字符,后面截取的字符串都以“...”表示,当跳到另一界面时,用“…”代替的信息都全部显示出来
在GridView中,我希望某个字段只显示10个字符,后面截取的字符串都以"..."表示,当跳到另一界面时,用“…”代替的信息都全部显示出来,相当于查看它的详细信息。另一界面是显示他的详细信息的!跳到那个界面时,他的信息都全部显示出来。如何写代码呀。求大侠!前面的那个获取截取字段的已经实现了,并且已用”…“代替。就是跳到另一界面时,没有显示他的详细信息。还是“…”显示。现在我要的是:在一个gridiew控件中选中一个数据,显示它的详细信息。原先“…”代替的数据要显示出来! --------------------编程问答--------------------
我的blog
http://blog.csdn.net/chinajiyong/article/details/7389998 --------------------编程问答-------------------- 做个模板列吧,自己里面放置一个用来显示内容的组件,这样你控制起来会方便多 --------------------编程问答--------------------
for(int i = 0; i < e.Row.Cells.Count; i++)
{
if (e.Row.Cells[i].Text.Length > 10 )
e.Row.Cells[i].Text = "<a title=\"" + e.Row.Cells[i].Text + "\" style=\"color:#ff0000;cursor:default\" >" + e.Row.Cells[i].Text.Substring(0, 10) + "...</a>";
} --------------------编程问答-------------------- 我用的是鼠标双击事件,怎么写代码呀。大侠……… --------------------编程问答-------------------- Substring截取一下后面的用...,跳转到其他页面正常读取数据不受影响! --------------------编程问答-------------------- 我用的是鼠标双击事件,用这个可能不行吧。。。 --------------------编程问答-------------------- 是用substring截取的呀。可是双击点击那一列获取到的还是“…”,没有显示出来。。 --------------------编程问答-------------------- 如果双击的话,根据当前行的ID,在新页面里面在去获取他的详细信息不行吗?
如果你是在后台就把这个数据处理过,这样双击出来的肯定是带...的
2楼的方法可试下,放个模板列,点击的时候获取模板列里面的数据 --------------------编程问答-------------------- 传过去的时候 不要截取。 --------------------编程问答--------------------
方法一:--------------------编程问答-------------------- 你这个方法只是把需要截取的字符串显示为“…”吧。我要的是之前代替为“…”的信息显示出来。。 --------------------编程问答-------------------- 我以前项目里做过 我找找 --------------------编程问答--------------------
asp:TemplateField HeaderText="备注" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<%#Eval("ipadRemark").ToString().Length > 10 ? Eval("ipadRemark").ToString().Substring(0, 10) + "..." : Eval("ipadRemark")%>
</ItemTemplate>
</asp:TemplateField>
/// 方法二
/// </summary>
/// <param name="remark"></param>
/// <returns></returns>
//处理地址
public string CutAddress(string address)
{
string str = "";
if (address == "")
{
str = "";
return str;
}
if (address != "" && address.Length > 10)
{
str = address.Substring(0, 10) + "...";
}
else
{
str = address;
}
return str;
}
这个写在行绑定里面不影响你的双击事件啊 --------------------编程问答--------------------
.mlength
{
text-align : left;
display: block;
width: 300px;
overflow: hidden;
white-space: nowrap;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
}
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("") %>' CssClass="mlength" ToolTip='<%# Eval("xxx") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
--------------------编程问答--------------------
protected void gridview_DataBound(object sender, EventArgs e)
{
foreach (GridViewRow row in gvLawName.Rows)
{
foreach (TableCell cell in row.Cells)
if (cell.Text.Length > 25)
cell.Text = cell.Text.Substring(0, 10) + "...";
}
}
protected void gridview_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
((Label)e.Row.Cells[0].FindControl("Label1")).ToolTip = ((Label)e.Row.Cells[0].FindControl("Label1")).Text;
}
}
/// <summary>--------------------编程问答-------------------- 上面还有点没改回来
/// 行绑定
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gvdata_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
for(int i = 0; i < e.Row.Cells.Count; i++)
{
if (e.Row.Cells[i].Text.Length > 13 && i != itake)
e.Row.Cells[i].Text = "<a title=\"" + e.Row.Cells[i].Text + "\" style=\"color:#ff0000;cursor:default\" >" + e.Row.Cells[i].Text.Substring(0, 13) + "...</a>";
}
}
}
if (cell.Text.Length > 10)
cell.Text = cell.Text.Substring(0, 10) + "...";
--------------------编程问答-------------------- 这个事件有用过吗?OnCustomDblClick ,我用的是这个双击事件。 --------------------编程问答--------------------
第一次看到OnDblClick倒是认识 --------------------编程问答-------------------- 这么多高手啊,顶一下吧 --------------------编程问答-------------------- 我也是第一次用。。所以不会用。。还是挺谢谢你的。呵呵…… --------------------编程问答-------------------- 将你截取好的字符串(就是前10个字符)获取出来后,从后面的字符开始,你直接用“.....”追加到后面,这些做好之后,在处理这些字符的单击事件中重新调用你获取所有信息的方法,就可以了。 --------------------编程问答-------------------- 我用是 OnCustomDblClick 这个双击事件,知道怎么用么?……引用 8 楼 的回复:]
如果双击的话,根据当前行的ID,在新页面里面在去获取他的详细信息不行吗?
如果你是在后台就把这个数据处理过,这样双击出来的肯定是带...的
2楼的方法可试下,放个模板列,点击的时候获取模板列里面的数据
[/Quote] --------------------编程问答-------------------- 用的是这个的OnCustomDblClick双击事件。不知道怎么写。。。 --------------------编程问答-------------------- --------------------编程问答-------------------- 你没毛病吧?…… --------------------编程问答-------------------- <%#Eval().ToString().Length>10?Eval().ToString().SubString(0,10)+"...":Eval()%>
当然,要在TemplateField里写 --------------------编程问答-------------------- 请教您一个问题:
<asp:TemplateField HeaderText="操作信息" SortExpression="strShortInfo">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# MySubstring(DataBinder.Eval(Container.DataItem,"strShortInfo").ToString()) %>'></asp:Label>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Wrap="False" />
<ItemStyle HorizontalAlign="Left" VerticalAlign="Middle" Wrap="False" />
</asp:TemplateField>
我这样写的模板列对么? --------------------编程问答-------------------- 已经写到里面了。可获取到的值还是空的。。 --------------------编程问答-------------------- <asp:TemplateField HeaderText="操作信息" SortExpression="strShortInfo">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<Eval("col").ToString().Length>10?<Eval("col").ToString().subString(0,10)+"..":<Eval("col").ToString();'></asp:Label>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Wrap="False" />
<ItemStyle HorizontalAlign="Left" VerticalAlign="Middle" Wrap="False" />
</asp:TemplateField> --------------------编程问答-------------------- 写错了,是Text="<%#Eval("")%>" --------------------编程问答-------------------- 那个MySubstring是我在后台写的一个方法。。这里是调用它。
现在主要是那一个字段没有获取到值。不知道什么原因。 --------------------编程问答-------------------- 我这个不知道可否帮到你
<span><%# GetStrA( Eval("Content"),50)%></span>
后台:
--------------------编程问答-------------------- 您用的是什么事件?? --------------------编程问答-------------------- 清清月儿的 72绝技里貌似有这个吧 楼主可以参考一下 --------------------编程问答--------------------
/// <summary>
/// 字符串截取
/// </summary>
/// <param name="str">需要截取的字符串</param>
/// <param name="strLen">截取长度</param>
/// <returns></returns>
public static string GetStrA(object objStr, int strLen)
{
string str = objStr.ToString();
if (str.Length < strLen)//如果输入的字符串长度小于指定的长度
{
str = str.Substring(0, str.Length);//字符长度大于字符长度
}
else
{
str = str.Substring(0, strLen) + "...";
}
return str;
}
/// <summary>
/// 字符串截取,无省略号
/// </summary>
/// <param name="str">需要截取的字符串</param>
/// <param name="strLen">截取长度</param>
/// <returns></returns>
public static string GetStrB(object objStr, int strLen)
{
string str = objStr.ToString();
if (str.Length < strLen)//如果输入的字符串长度小于指定的长度
{
str = str.Substring(0, str.Length);//字符长度大于字符长度
}
else
{
str = str.Substring(0, strLen) ;
}
return str;
}
不是哪个事件,就一个方法函数
这个写的是后台的一个方法,直接运用到前台数据绑定 --------------------编程问答-------------------- 这个知道。我说你选中那行数据跳到另外一个界面,没有用到事件吗?
不知你用过OnDblClick这个事件没??? --------------------编程问答-------------------- 哦。他那个只是截取数据而已!我要的是获取用“…”代替的那些数据。。。
不过还是很感谢你!…… --------------------编程问答-------------------- <%#Eval("字段").ToString().Length>10?Eval("字段").ToString().SubString(0,10)+"...":Eval("字段")%> --------------------编程问答-------------------- 恩,你这个方法也只是截取数据而已呢。我想双击鼠标跳到另一界面后,能够把它用“…”代替的数据都显示出来。。 --------------------编程问答-------------------- 在当前页面用三元表达式去判断、截取。传到详细页面的时候、传全部、或者ID、在从数据库读一次也行啊。 --------------------编程问答--------------------
哎呀,你直接获取你编辑行的id,然后根据id查询显示相关信息不就行了 --------------------编程问答-------------------- <a href="ShowDetail.aspx"><%# Eval("title").ToString().length>10?Eval("title").ToString().length(0,10)+"...":Eval("title").ToString()%></a>
你在ShowDetail.aspx中直接绑定就行 <%# Eval("title").ToString()%> --------------------编程问答-------------------- 我在gridview上写了
我想这样子做:在 GridView中 放一个隐藏列,把截取的数据放到这个里面。在跳转另一界面时把隐藏列的数据获取出来。不知道怎写。大侠帮帮忙呀。。。 --------------------编程问答-------------------- 鼠标双击选中该行数据还是“…”这样。数据没有全部显示出来。。。
补充:.NET技术 , ASP.NET