aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 14391|回复: 2

请教:批量充填数据到table,但使用innerHTML属性的无效,如何解决?

[复制链接]

1

主题

3

回帖

28

积分

新手入门

积分
28
发表于 2013-5-9 21:26:38 | 显示全部楼层 |阅读模式
创建一个简单的界面,有一个table,用数据去填充,形成多行。下面的写法得到的结果是“图标”这一列毫无内容,如果改成innerText填充纯文本是没问题。但这里我想利用shell-icon来显示文件缩略图,所以一定是要一个html的图像来填充。谁知道是什么原因么?还是我这种写法不行?
  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = ..win.form( right=599;bottom=399;text="HTMLayout示例")
  4. winform.add(  )
  5. /*}}*/

  6. //web.layout 这里很需要你
  7. import web.layout;

  8. var wbLayout = web.layout( winform )


  9. wbLayout.html = /**

  10. <div id="itemList">
  11.         <table>
  12.                 <tr class="header">
  13.                         <th>序号</th>
  14.                         <th>图标</th>
  15.                         <th>名称</th>
  16.                         <th>大小</th>
  17.                 </tr>
  18.         </table>
  19. </div>
  20. <textarea id="val"></textarea>

  21. **/

  22. wbLayout.css = /**

  23. #itemList
  24. {
  25.         style-set: "item-list";
  26. }
  27. @set item-list
  28. {
  29.         :root
  30.         {
  31.                 width:*;
  32.                 height: *;
  33.                 min-height:100px;
  34.                 padding:2px;
  35.         }
  36.         :root table
  37.         {
  38.                 behavior:grid column-resizer;
  39.                 overflow:auto;
  40.                 width:*; height:*;
  41.                 border-collapse:collapse;
  42.                 flow: table-fixed;
  43.                 assigned!:self.fixedrows=1;
  44.         }

  45.         :root table tr
  46.         {
  47.                 height: 1.8em;
  48.         }

  49.         :root table td
  50.         {
  51.                 white-space:nowrap;
  52.                 border-bottom:1px solid silver;
  53.         }

  54.         :root table th
  55.         {
  56.                 height: 1.6em;
  57.                 font-weight: bold;
  58.                 text-align: left;
  59.         }
  60.         :root table th:hover
  61.         {
  62.                 border-bottom-color: orange;
  63.         }

  64.         :root table tr:current
  65.         {
  66.                 background-color: blue;
  67.                 color: white;
  68.         }
  69. }

  70. textarea#val
  71. {
  72.         width: *;
  73.         height:200px;
  74. }

  75. **/

  76. // 示例数据,将填充html中的table
  77. data = {
  78.     ["1"] = { SIZE="651";TYPE="doc";NAME="改造方案(精简版).doc";
  79.     UPDATED_BY="超猪";PATH="D:\dev\aau\HTMLayout";
  80.     UPDATED="02/01/13 17:11:27";CREATED_BY="超猪";CREATED="03/18/13 10:30:01";
  81.     VERSION="0.1";ROWID=1 }
  82.     ["2"] = { SIZE="15.66";TYPE="xls";NAME="修订表.xls";
  83.     UPDATED_BY="超猪";PATH="D:\dev\aau\HTMLayout";UPDATED="01/07/13 17:03:15";
  84.     CREATED_BY="超猪";CREATED="03/18/13 13:20:57";VERSION="0.1";ROWID=2 }
  85.     ["3"] = { SIZE="13";TYPE="ppt";NAME="清单v2-20130105.ppt";
  86.     UPDATED_BY="超猪";PATH="D:\dev\aau\HTMLayout";UPDATED="02/04/13 15:37:59";
  87.     CREATED_BY="超猪";CREATED="03/18/13 13:20:57";VERSION="0.1";ROWID=3 }
  88. }

  89. var list = wbLayout.$1("#itemList table");

  90. // 开始填充
  91. for(k,v in data){
  92.         tr = wbLayout.createEle("tr");
  93.         tr.name = "data";

  94.         var coldata = {
  95.                 { innerText = tostring(v.ROWID) };
  96.                 { innerHTML = "<img class='shell-icon' filename='."+v.TYPE+"' />" };
  97.                 { innerText = v.NAME };
  98.                 { innerText = v.SIZE };
  99.         };
  100.        
  101.         for(i, j in coldata){
  102.                 var td = wbLayout.createEle("td");
  103.                 tr.append(td);
  104.                 for(attrName, attrValue in j) { td[attrName]=attrValue; }
  105.        
  106.         }
  107.        
  108.         list.append(tr);
  109.                                        
  110. }

  111. // 显示table的html,可发现图标这栏没填充上
  112. wbLayout.$1("textarea#val").value = wbLayout.$1("#itemList").outerHTML


  113. winform.show();
  114. win.loopMessage();
复制代码

1

主题

3

回帖

28

积分

新手入门

积分
28
 楼主| 发表于 2013-5-9 22:12:32 | 显示全部楼层
终于弄明白了。
三个问题,一个是behavior的库要引用,一个是css设置,还有是代码的执行顺序。
一定要先加入DOM再修改属性。这点好像跟js不一样啊。
可以参考 http://www.aardiofans.com/page/3/
  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = ..win.form( right=599;bottom=399;text="HTMLayout示例")
  4. winform.add(  )
  5. /*}}*/

  6. import web.layout;
  7. import web.layout.behavior.grid;
  8. import web.layout.behavior.shellIcon;

  9. var wbLayout = web.layout( winform )

  10. import console;

  11. wbLayout.html = /**

  12. <div id="itemList">
  13.         <table>
  14.                 <tr class="header">
  15.                         <th>序号</th>
  16.                         <th>图标</th>
  17.                         <th>名称</th>
  18.                         <th>大小</th>
  19.                 </tr>
  20.         </table>
  21. </div>
  22. <textarea id="val"></textarea>

  23. **/

  24. wbLayout.css = /**

  25. #itemList
  26. {
  27.         style-set: "item-list";
  28. }
  29. @set item-list
  30. {
  31.         :root
  32.         {
  33.                 width:*;
  34.                 height: *;
  35.                 min-height:100px;
  36.                 padding:2px;
  37.         }
  38.         :root table
  39.         {
  40.                 behavior:grid column-resizer;
  41.                 overflow:auto;
  42.                 width:*; height:*;
  43.                 border-collapse:collapse;
  44.                 flow: table-fixed;
  45.                 assigned!:self.fixedrows=1;
  46.         }

  47.         :root table tr
  48.         {
  49.                 height: 1.8em;
  50.         }

  51.         :root table td
  52.         {
  53.                 white-space:nowrap;
  54.                 border-bottom:1px solid silver;
  55.         }

  56.         :root table th
  57.         {
  58.                 height: 1.6em;
  59.                 font-weight: bold;
  60.                 text-align: left;
  61.         }
  62.         :root table th:hover
  63.         {
  64.                 border-bottom-color: orange;
  65.         }

  66.         :root table tr:current
  67.         {
  68.                 background-color: blue;
  69.                 color: white;
  70.         }
  71. }

  72. img.shell-icon
  73. {
  74.         width:20px;
  75.     height:20px;
  76.     behavior: shell-icon;
  77.     vertical-align:middle;
  78. }

  79. textarea#val
  80. {
  81.         width: *;
  82.         height:200px;
  83. }

  84. **/

  85. // 示例数据,将填充html中的table
  86. data = {
  87.     ["1"] = { SIZE="651";TYPE="doc";NAME="改造方案(精简版).doc";
  88.     UPDATED_BY="超猪";PATH="D:\dev\aau\HTMLayout";
  89.     UPDATED="02/01/13 17:11:27";CREATED_BY="超猪";CREATED="03/18/13 10:30:01";
  90.     VERSION="0.1";ROWID=1 }
  91.     ["2"] = { SIZE="15.66";TYPE="rar";NAME="修订表.rar";
  92.     UPDATED_BY="超猪";PATH="D:\dev\aau\HTMLayout";UPDATED="01/07/13 17:03:15";
  93.     CREATED_BY="超猪";CREATED="03/18/13 13:20:57";VERSION="0.1";ROWID=2 }
  94.     ["3"] = { SIZE="13";TYPE="ppt";NAME="清单v2-20130105.ppt";
  95.     UPDATED_BY="超猪";PATH="D:\dev\aau\HTMLayout";UPDATED="02/04/13 15:37:59";
  96.     CREATED_BY="超猪";CREATED="03/18/13 13:20:57";VERSION="0.1";ROWID=3 }
  97. }

  98. var list = wbLayout.$1("#itemList table");

  99. // 开始填充
  100. for(k,v in data){
  101.         tr = wbLayout.createEle("tr");
  102.         list.append(tr);
  103.         tr.name = "data";

  104.         var coldata = {
  105.                 { innerText = tostring(v.ROWID) };
  106.                 { innerHTML = "<img class='shell-icon' filename='."+v.TYPE+"' />" };
  107.                 { innerText = v.NAME };
  108.                 { innerText = v.SIZE };
  109.         };
  110.        
  111.         for(i, j in coldata){
  112.                 var td = wbLayout.createEle("td");
  113.                 tr.append(td);
  114.                 for(attrName, attrValue in j) {
  115.                         td[attrName]=attrValue;
  116.                         //td.innerHTML = "<div>Hello</div>"
  117.                 }
  118.        
  119.         }
  120.        

  121.                                        
  122. }

  123. // 显示table的html,可发现图标这栏没填充上
  124. wbLayout.$1("textarea#val").value = wbLayout.$1("#itemList").outerHTML


  125. winform.show();
  126. win.loopMessage();
复制代码

评分

参与人数 1 +50 收起 理由
万事发↑新一天 + 50 赞一个!

查看全部评分

8

主题

88

回帖

635

积分

三级会员

积分
635
发表于 2013-5-9 22:20:20 | 显示全部楼层
多谢分享
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2024-10-13 09:21 , Processed in 0.065141 second(s), 28 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表