我有一个ASP gridview控件。我在项目模板列中有一个ASP标签控件。我使用数据绑定到网格 -使用Eval显示截断的字符串
<ItemTemplate>
<asp:Label ID="lblDesc" runat="server" Text='<%# Eval("Description") %>'></asp:Label>
</ItemTemplate>
但是,此字符串的值可以高达80个字符。但是,我不能让柱子长度如此之高。而且,有限制,所以我不能使用Wrap="true"
并限制列宽。
所以,我认为解决方案可能是在网格中只显示约50个字符,并将整个字符串显示为工具提示。我设法做到这一点 -
<ItemTemplate>
<asp:Label ID="lblDesc" runat="server" Text='<%# Eval("Description").ToString().Substring(0,50) %>' ToolTip='<%# Eval("Description") %>'></asp:Label>
</ItemTemplate>
这显示网格列中字符串的前50个字符。并且,当鼠标指针悬停在文本上时,完整的字符串将显示为工具提示。但是,当字符串长度小于50个字符时会出现问题。在这种情况下,抛出异常。
我试着修改这段代码,通过检查字符串长度来允许条件显示。但是,我无法得到这个工作。
有没有办法解决这个问题?我们可以在Eval()中调用一个javascript函数吗?
小心'的eval(“...”)的ToString()'。如果Eval返回null,你会得到一个NullReferenceException。你可以试试'<%#TruncateString((Eval(“FieldName”)??“”).ToString(),150)%>'但这并不会使事情更具可读性。 – Ruben 2010-07-29 15:14:09
良好的通话。我之前一直在寻找我的旧代码,但是我找不到它,所以上面的代码几乎是即时的。我个人喜欢你?理念;如果只有合并操作员不那么(不当地)模糊,它会更具可读性。 – 2010-07-29 15:19:29
我个人用这个解决方案进入标点符号超负荷状态;但是如果你使用DataTables并且你会得到一个'DBNull'值,''%#TruncateString((String)Eval(“FieldName”),150)%>'会炸弹。 – Ruben 2010-07-29 15:28:25