table行转列
table行转列
摘要
在使用ews调用exhange的收件箱的并在h5页面显示邮件详情的时候,因为返回的每封邮件的内容都是htmlbody,没有textbody。每封邮件又没什么规律,用正则表达式来匹配内容并不合适,另外又要保持原邮件的格式。这个确实很难统一。目前是使用iframe标签,将原邮件的html在iframe中展示。但问题又来了,如果邮寄中有大表格,大图片,如何保持邮件内容自适应?
思考
通常的做法是在head中添加meta标签
<meta name="viewport" content="width=device-width,user-scalable=0" />
但并不能解决所有的问题。
1.图片
图片自适应
img{
 max-height:720px;
 max-width:640px;
 width:expression(this.width > 640 && this.height < this.width ? 640: true);
 }
通过上面的代码,来控制图片的宽度,但也并不完美。因为手机屏幕到底多宽,是不确定的,目前是让iframe自适应,然后将宽度图片宽度设置为100%。
2.table
表格问题,最让人头疼,如果是单列的表格,还能做到适应,如果遇到table中嵌套table,嵌套img的,还是适应不了。今天,在想,多列的适应不了,那么我给它转成一列的能否解决问题?
也算一种尝试,不知道能否解决。

@{
    ViewBag.Title = "Table";
}
@model  IEnumerable<Wolfy.LogMonitor.Models.Log>
<table style="width:100%;" id="tb1" border="1">
    <tr>
        <td>类型</td>
        <td>内容</td>
        <td>时间</td>
        @*<td>嵌套table</td>*@
    </tr>
    @foreach (var item in Model)
    {
        <tr>
            <td>@item.Type</td>
            <td>@item.Content</td>
            <td>@item.Dt</td>
            @*<td>
                    <table style="width:100%;" id="tb2">
                        <tr>
                            <td>类型</td>
                            <td>内容</td>
                            <td>时间</td>
                        </tr>
                        @foreach (var item2 in Model)
                        {
                            <tr>
                                <td>@item2.Type</td>
                                <td>@item2.Content</td>
                                <td>@item2.Dt</td>
                            </tr>
                        }
                    </table>
                </td>*@
        </tr>
    }
</table>
<script>
    $.fn.convertColumns2Rows = function (obj) {
        console.log(obj);
        var self = new Object();
        if (!obj) {
            var self = this;
        } else {
            self = obj;
        }
        var tds = $(self).find("tr").find("td");
        if (tds.length > 2) {
            //清空原表格内容
            $(self).html('');
            $.each(tds, function (index, element) {
                $.fn.convertColumns2Rows($(element));
                $('<tr><td>' + $(element).html() + '</td></tr>').appendTo($(self));
            });
        }
    };
    var tables = $("table");
    console.log(tables.length)
    for (var i = 0; i < tables.length; i++) {
        $(tables[i]).convertColumns2Rows();
    }
    //$("#tb2").convertColumns2Rows();
</script>

上面,为表格添加了扩展方法,实现将多列的表格转换为一列多行的。
原始表格

转换后的表格

以及表格嵌套表格,在扩展方法中,添加了递归。

转换后的

总结
关于exhange中email内容的展示,目前也没一个完美的解决方案,怎么让它自适应。目前也尝试很多方法。这个行转列的问题,也是进行尝试的一种。exchange返回的html并没有自己做自适应,只能在返回的内容中,自己做适配了。如果你也遇到这样的问题,该如何解决?期待更好的解决方案。
table行转列的更多相关文章
- [Js/Jquery]table行转列
		
摘要 在使用ews调用exhange的收件箱的并在h5页面显示邮件详情的时候,因为返回的每封邮件的内容都是htmlbody,没有textbody.每封邮件又没什么规律,用正则表达式来匹配内容并不合适, ...
 - [转] js实现html table 行,列锁定
		
js实现html table 表头,指定列锁定 实现效果如下: 感兴趣的朋友可以直接复制出来运行看效果. <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTM ...
 - js实现table内 某列的内容进行即时筛选
		
往往有些时候,我们把数据从数据库读取出来,显示到table里面,而此时来了个新需求,要在一个搜索框内输入关键字,表格的内容进行即时的筛选. 而即时触发进行数据库的查询,再回调显示,就显得慢,拖累服务器 ...
 - MySQL 行转列  -》动态行转列 -》动态行转列带计算
		
Pivot Table Using MySQL - A Complete Guide | WebDevZoomhttp://webdevzoom.com/pivot-table-using-mysql ...
 - 9月6日表格标签(table、行、列、表头)(补)
		
一.<table> <table>代表表格标签. <table></table> 1.width 表示表格宽度,宽度表达方式有像素和百分比两种.网 ...
 - 用JavaScript,获取Table中指定的行、列
		
前言: 先要谢谢George Wing的慷慨赠书<悟透JavaScript>,让我更加感受到了技术交流的重要性,呵呵~ 进入正题,面试题中有一题:如何通过JavaScript获取Table ...
 - 表格标签(table、行、列、表头)
		
表格标签 一.<table> <table>代表表格标签. <table></table> 1.width 表示表格宽度,宽度表达方式有像素和百分 ...
 - SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)
		
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL, ...
 - Oracle行转列、列转行的Sql语句总结
		
多行转字符串 这个比较简单,用||或concat函数可以实现 SQL Code 12 select concat(id,username) str from app_userselect i ...
 
随机推荐
- MATLAB cell 数组介绍
			
转载:http://www.matlabsky.com/forum.php?mod=viewthread&tid=21089 由于工作需要,经常要处理大量的实验数据.基本都是由仪器导出来,随着 ...
 - lua好久没有用了
			
lua好久没有用了, 最近用python有点多,现在用web.py搞个简单的页面来作通讯录,没美工,很纯白的, 无聊啊,准备去睡了,刚刚百度完lua的一些资料呢, google用不了,真悲剧啊, TM ...
 - documentElement vs body
			
document.documentElement与document.body. 2011-03-12 10:15:46| 分类: javascript|字号 订阅 这是DOMDocument ...
 - 面试题 46 1+ 2+3+...+n
			
class Temp{ public: Temp(){ ++N; sum+=N; } static void Reset(){ N = ; sum = ; } static int getSum(){ ...
 - Android中实现全屏、无标题栏的两种办法(另附Android系统自带样式的解释)
			
在进行UI设计时,我们经常需要将屏幕设置成无标题栏或者全屏.要实现起来也非常简单,主要有两种方法:配置xml文件和编写代码设置. 1.在xml文件中进行配置 在项目的清单文件AndroidManife ...
 - Linux cat和EOF的使用
			
在某些场合,可能我们需要在脚本中生成一个临时文件,然后把该文件作为最终文件放入目录中.(可参考ntop.spec文件)这样有几个好处,其中之一就是临时文件不是唯一的,可以通过变量赋值,也可根据不同的判 ...
 - js深入研究之Person类案例
			
<script type="text/javascript"> /* 定义一个Person类 */ function Person(name, age) { this. ...
 - 2015第19周四jquery版本
			
今天用到一个jquery插件,发现最新版需要jquery2.0以上版本才行,而目前项目在用的版本是1.8.3,自然无法使用,刚看了jquery的主要版本和差异,直接百度搜索无满意结果,最后在百科中给出 ...
 - bzoj1676[Usaco2005 Feb]Feed Accounting 饲料计算
			
Description Farmer John is trying to figure out when his last shipment of feed arrived. Starting wit ...
 - Interfaces
			
阅读Java的官方Doc,总结如下. What is Interface An interface is a reference type, similar to a class, that can ...