ASP.NET GridView - 防止列中的自动换行
在 ASP.NET GridView 上,我有一个从数据库打印字符串的字段。 此数据的范围可以是 10 到 100 个字符。 当它比正常情况长时,字段会对数据进行自动换行,使该行比其他行占用更多的垂直空间。 我想截断任何不适合该行的数据,然后在其旁边有一个“...”以指示还有更多数据。 我不需要让它们调整大小,我只是不想要任何不同高度的行。 我希望这可以在客户端动态完成,以达到搜索引擎优化的目的。
请参阅ActiveWIdgets 网格,然后调整公司名称的大小,使其不适合。 您会注意到它没有包装内容,但它恰恰做了我想做的事情。
如何将此技术应用于 ASP.NET GridView? 我假设涉及一些Javascript。 如果这是真的,我宁愿不使用像 jQuery 这样的库(不要问为什么——我不允许在这个项目中使用外部依赖项)。
On an ASP.NET GridView, I have a field that prints a string from the database. This data can range from 10 to 100 characters. When it is longer than normal, the field word-wraps the data, making the row take up more vertical space than the others. I want to truncate any data that does not fit on the row, and then have a "..." next to it to indicate there is more. I don't need to allow them to resize, I just don't want any rows of different height. I'm hoping this can be done dynamically on the client-side, for SEO purposes.
See the ActiveWIdgets Grid here, and resize the company name so that it does not fit. You will notice that it does not wrap the contents, but it instead does exactly what I want to do.
How can I apply this technique to an ASP.NET GridView? I assume some Javascript is involved. If that is true, I would prefer to NOT use a library like jQuery (don't ask why -- I am not allowed to use an external dependency for this project).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
目录
问题说明
将以下 HTML 复制到您的浏览器(至少是 Firefox 和 Internet Explorer 7,但您也应该尝试 Opera):
请注意,
td
元素不会隐藏溢出的内容。 现在只有div
元素知道如何执行此操作。 Internet Explorer 的td
元素甚至不知道如何停止换行内容。严格来说,根据标准,
td
元素不支持white-space
规则。div
和th
元素可以。一种解决方案的说明
这是该问题的一个解决方案(在 Opera、Firefox 和 Internet Explorer 7 中测试):
Table of contents
Illustration of problem
Copy the following HTML into your browsers (at least Firefox and Internet Explorer 7, but you should try Opera too):
Notice that the
td
element does not hide the overflowing content. Only thediv
element nows how to do this. Internet Explorer'std
element does not even know how to stop wrapping the content.Strictly speaking, according to the standard, the
td
element does not support thewhite-space
rule. Thediv
andth
elements do.Illustration of one solution
This is one solution to the problem (Tested in Opera, Firefox and Internet Explorer 7):
如果您知道您的用户使用的是 Internet Explorer,则可以使用以下仅限 IE 的 CSS:
然后将要固定宽度的列的 ItemStyle 设置为(您需要使用 CSS 才能使其适合您的应用程序)
不幸的是,由于这仅适用于 IE,对于其他浏览器,有一些 hack 可用于模拟相同的事情:
If you know your user is using Internet Explorer, you can use the following IE only CSS:
Then set the ItemStyle for the column you want to fix the width of as
<ItemStyle CssClass='nooverfolow'/>
(you'll need to play with the CSS to get it right for your application)Unfortunately since this is IE only, for other browsers, there are some hacks available to simulate the same thing: