需要特别注意语法的问题。
HTML源码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="css/index.css" />
<script type="text/tiscript">
$(#tableID).onClick = function()
{
stdout.println("in ItemHtml start!");
view.tableID(); //必须有这句才能与后端交互
};
function sayHello(param)
{
stdout.println("in sayHello start!");
var jsonData = JSON.parse(param);
var tableRowNo;
var tableID_show = $(table#tableID);
stdout.println(jsonData.length);
for(tableRowNo=0; tableRowNo<jsonData.length; tableRowNo++)
{
var trTmp = new Element("tr"); //挖出一个tr标签
var tdTmp1 = new Element("td"); //挖一个td标签
tdTmp1.text = jsonData[tableRowNo]['index']; //拿出对象插入到td标签里面
trTmp.append(tdTmp1); //再把td标签加入到tr标签里面都会自带结尾
//stdout.println(trTmp.outerHtml());
stdout.println("in td 111!");
var tdTmp2 = new Element("td"); //生成一个td标签
tdTmp2.text = jsonData[tableRowNo]['volumePathName'];//拿取js数组的值插入到td
trTmp.append(tdTmp2); //再把td标签插入到tr标签里面;
tableID_show.append(trTmp);
stdout.println("in tr 222!");
}
stdout.println("in tr 33333!");
stdout.println(tableID_show.outerHtml());//打印错误信息;
}
</script>
</head>
<body>
<div style="width: 570px;height: 450px;background-color: #F0F0F0;padding: 20px;">
<table #tableID style="background-color: #fff;width: 100%;">
<tr>
<th style="width: 40%;text-align: left;">Item Name</th>
<th style="width: 60%;text-align: left;">Description</th>
</tr>
</table>
<button.fr>OK</button>
</div>
</body>
</html>
C++中源码
//tableID 表控件ID
sciter::value CMakePeFrame::ItemTest()
{
int i;
char* sJson;
cJSON* pRoot, *pSub;
CStringA strA;
pRoot = cJSON_CreateArray();
for (i = 0; i < 3; i++) //每次所有数据插入一个数组里面
{
cJSON_AddItemToArray(pRoot, pSub = cJSON_CreateObject());//数据插入数组中传给html
cJSON_AddNumberToObject(pSub, "index", i);//第一列的数据
strA = "aaaa";
strA.Replace('\\', ' ');
cJSON_AddStringToObject(pSub, "volumePathName", strA);//第二列的数据
cJSON_AddNumberToObject(pSub, "totalNumberOfFreeBytes", i*10+i);//第三列的数据
}
sJson = cJSON_PrintUnformatted(pRoot);
strA = sJson;
CStringW strW;
strW = strA;
sciter::value svPartition = "aa3525aa";
sciter::value svRet = call_function("sayHello", strW.GetBuffer()); //这里调用html里面的函数 这段重点
sciter::string strtmp = svRet.to_string();
cJSON_Delete(pRoot);
if (sJson) free(sJson);
return svPartition;
}
.h中的声明
BEGIN_FUNCTION_MAP
FUNCTION_0("tableID", ItemTest); //表控件的发送消息
END_FUNCTION_MAP
//下面的函数声明
sciter::value ItemTest(); //table 控件第一列