你的写法本身并没有错!
for(var k=0; k<aData[0].length; k++){
//请在这里检查rs.fields(k).value和aData[j][k]的值
rs.fields(k).value = aData[j][k]; //----->问题?
}在我给你的示例代码中,上面的列表是用xsl生成的,下面的表格是数据岛绑定的
另外有一个test函数可共测试使用
改成
function test() {
  alert(xmldso.recordset.fields('姓名').value)
  xmldso.recordset.fields('姓名').value = 'abcd'
}
并加入按钮
<input type=button value=test onclick=test()>点击后你将发现数据岛内容已经被修改了

解决方案 »

  1.   

    检查后结果 // 更新数据岛记录
    rs.movefirst();
    for(var j=0; j<aData.length; j++){
    alert("before for:"+rs.fields(3).value); //------>值正常
    for(var k=0; k<aData[0].length; k++){
    alert("before =:"+rs.fields(k).value);   //------>值正常
    rs.fields(k).value = aData[j][k];
    alert("after =:"+rs.fields(k).value);    //------>值正常
    }
    alert("after for:"+rs.fields(3).value);  //------>值null
    rs.Update();
    rs.movenext();
    }
      

  2.   

    xuzuning(唠叨)  xsl的例子给我不少启发,解决了几个其他问题。呵呵
    就剩下修改数据是个比较棘手的问题了。我也觉得代码没错, 但就是有问题!
      

  3.   

    你为什么不检查aData[j][k]的值?
      

  4.   

    怎么alert("after for:"+rs.fields(3).value);  //------>值null
    出了循环就没有值了吗?
    rs.fields(3)存在吗?
    当小于4列时,rs.fields(3)就不存在了
      

  5.   

    aData[j][k] 测试过没问题。
    问题就像你说的,出了循环就没有值了,循环内正常。奇怪, 游标都没动。
      

  6.   

    rs.fields(3)是存在的。最上面有alert("before for:"+rs.fields(3).value); //------>值正常
    我只是为了方便, 没写所有值。
    其实我也测试过所有值, 都null
      

  7.   

    我知道问题出在哪里了rs.fields.count 返回的值比实际的列数多一个
    只要将
    for(var j=0; j<rs.fields.count; j++){
    改为
    for(var j=0; j<rs.fields.count-1; j++){
    就正确了其实你就是没有认真的检查aData[j][k]的值
    for(var k=0; k<aData[j].length; k++){
    alert("["+j+','+k+"]"+aData[j][k]);
    rs.fields(k).value = aData[j][k];
    }
    按你的原代码,将会多出一个包括全部列数据的值