◆◆◆◆◆ 更新数据岛数据的问题

wilowind 2006-06-06 09:48:17
下面的代码, 实现数据岛排序。
1.得到数据岛数据
2.数据写入二维数组
3.二维数组排序
4.二维数据更新数据岛

第一次排序工作正常,第二次排序时,rs数据源的值都为null了。
问题应该是程序最后更新数据岛记录的问题。但不知为什么错。

望高人指点...............................

---------------------------
代码中不必要的代码用...代替,免得太杂,看不清。


/* 数据岛数据排序
*CellIndex 列号
*Type 排序类型 1递增,0递减
*dbgridid html中dbgrid的id
*/
function TSort(CellIndex,Type,dbgridid){

// 得到数据源
var rs = xmlData1.recordset;//xmlData1为xml的id,xml嵌在html内

// 创建二维数组aData,用于存储dbgrid数据
var aData = new Array(rs.recordcount);
for(var c=0; c<aData.length; c++){
aData[c] = new Array();
}

// xml数据岛数据写入二维数组aData
var i=0;
rs.movefirst();
while(!rs.eof){
for(var j=0; j<rs.fields.count; j++){
aData[i][j]=rs.fields(j).value;
}
rs.movenext();
i+=1;
}

// 开始排序
aData.sort(function(m,n){return ...});

// 更新数据岛记录
rs.movefirst();
for(var j=0; j<aData.length; j++){
for(var k=0; k<aData[0].length; k++){
rs.fields(k) = aData[j][k];
}
alert(rs.fields(3));//----------> 此处为null,错误!!
rs.Update();
rs.movenext();
}
// alert(aData[3][3]);// 此处值正常
}
...全文
144 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wilowind 2006-06-06
  • 打赏
  • 举报
回复
up
wilowind 2006-06-06
  • 打赏
  • 举报
回复
谢谢xuzuning(唠叨) 好意, 种种原因,暂时不会用xsl。这个例子我会收藏的!

我的问题应该是很简单的, 会者不难...
xuzuning 2006-06-06
  • 打赏
  • 举报
回复
用xsl!这是完整的例子

<style>
body {font-size: 9pt; font-family:"Verdana", "Arial", "宋体"; }
td {font-size:9pt;}
.hand {cursor: hand}
input,textarea {border:1 solid #a0a0a0;}
.navPoint {font-family: Webdings; font-size: 7pt}
#QueryTable {
font: 14px "宋体";
color: #000000;
background-color: #FFFFFF;
border: #000000 solid;
border-width: 1px 0px 0px 1px
}
#QueryTable th
{
font: 14px "宋体";
color: #FFFFFF;
background-color: #6699CC;
border: 1px solid;
border-color: #CCCCCC #000000 #000000 #CCCCCC;
cursor: hand
}
#QueryTable tr.clsSelected
{
background-color: #333333
}
#QueryTable tr.clsSelected td
{
color: #FFFFFF;
border: #FFFFFF solid;
border-width: 0px 1px 1px 0px
}
#QueryTable td
{
color: #000000;
border: #000000 solid;
border-width: 0px 1px 1px 0px
}
#SortSpan
{
font: normal 14px "Webdings";
color: #FFCC33;

</style>
<body onLoad="init()">
<xml id="xmldso">
<epr>
<item>
<ID>1</ID>
<姓名>姓名</姓名>
<性别>性别</性别>
<单位>单位</单位>
<职务>职务/职称</职务>
<地址>地址</地址>
<电话>电话</电话>
<主页>主页</主页>
<电子邮件>电子邮件</电子邮件>
<摘要>摘要</摘要>
</item>
<item>
<ID>2</ID>
<姓名>姓名1</姓名>
<性别>性别1</性别>
<单位>单位1</单位>
<职务>职务/职称1</职务>
<地址>地址1</地址>
<电话>电话1</电话>
<主页>主页1</主页>
<电子邮件>电子邮件1</电子邮件>
<摘要>摘要1</摘要>
</item>
<item>
<ID>3</ID>
<姓名>姓名3</姓名>
<性别>性别0</性别>
<单位>单位2</单位>
<职务>职务/职称</职务>
<地址>地址0</地址>
<电话>电话</电话>
<主页>主页3</主页>
<电子邮件>电子邮件</电子邮件>
<摘要>摘要</摘要>
</item>
</epr>
</xml>
<xml id="xslsort">
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<!-- Identity transformation template -->
<xsl:template>
<xsl:copy><xsl:apply-templates select="@*|*|comment()|pi()|text()"/></xsl:copy></xsl:template>
<xsl:template match="epr">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates select="item" order-by="price"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
</xml>
<xml id="xsl_view">
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<xsl:script><![CDATA[
function getName(node) {
return node.nodeName;
}
]]></xsl:script>
<table width="100%"><tr><td align="right">
<input type="button" class="navPoint" value="9" title="第一页" onclick="QueryTable.firstPage()" />
<input type="button" class="navPoint" value="3" title="上一页" onclick="QueryTable.previousPage()" />
<input type="button" class="navPoint" value="4" title="下一页" onclick="QueryTable.nextPage()" />
<input type="button" class="navPoint" value=":" title="尾一页" onclick="QueryTable.lastPage()" />
</td></tr>
<tr><td width="100%"><table border="0" id="QueryTable" cellspacing="0" cellpadding="1" width="100%" datasrc="#xmldso" datapagesize="2">
<thead><tr>
<xsl:for-each select="//item[0]/*">
<th>
<xsl:attribute name="onClick">sort("<xsl:eval>getName(this)</xsl:eval>")</xsl:attribute>
<xsl:eval>getName(this)</xsl:eval>
<span id="SortSpan"> </span>
</th>
</xsl:for-each>
</tr></thead>
<tr onClick="locat(this.cells[0].innerText)">
<xsl:for-each select="//item[0]/*">
<td>
<span>
<xsl:attribute name="datafld"><xsl:eval>getName(this)</xsl:eval></xsl:attribute>
</span>
</td>
</xsl:for-each>
</tr>
</table></td></tr></table>
</xsl:template>
</xsl:stylesheet>
</xml>
<span id="view"></span>

<table width="90%" border="0" align="center" cellspacing="0" cellpadding="1" bgcolor="#000000">
<tr>
<td>
<table width="100%" bgcolor="#CCCC99" cellspacing="6">
<tr>
<td width=50%>
<table width="100%">
<tr>
<td colspan=2>单位<input type=text datasrc="#xmldso" datafld="单位" style="width:90%;"></td>
</tr>
<tr>
<td width=50%>姓名<input type=text datasrc="#xmldso" datafld="姓名" style="width:80%;"></td>
<td width=50%>职务<input type=text datasrc="#xmldso" datafld="职务" style="width:80%;"></td>
</tr>
<tr>
<td colspan=2>地址<input type=text datasrc="#xmldso" datafld="地址" style="width:90%;"></td>
</tr datasrc="#xmldso">
<tr>
<td valign=top width=50% rowspan=2><table cellspacing="0" cellpadding="0"><tr><td>电话</td><td width=80%><textarea cols=14 rows=3 STYLE="overflow:hidden;width:100%;" datasrc="#xmldso" datafld="电话"></textarea></td></tr></table></td>
<td width=50%>主页<input type=text size=10 datasrc="#xmldso" datafld="主页" style="width:80%;"></td>
</tr>
<tr datasrc="#xmldso"><td>电邮<input type=text datasrc="#xmldso" size=10 datafld="电子邮件" style="width:80%;"></td>
</tr>
</table>
</td>
<td width=50% valign=top>
<table bgcolor="#CCCC99" width="100%">
<tr>
<td>摘要<input type="hidden" id="bh" datasrc="#xmldso" datafld="ID"><br>
<textarea datasrc="#xmldso" id="textmsg" cols="30" rows="5" STYLE="overflow:hidden;width:100%;" name="textbox2" datafld="摘要"></textarea></td>
</tr>
<tr>
<td width="89%" bgcolor="#FFFFCC">
<table width=100% cellspacing="0">
<tr>
<td>
<input type=button value=测试 onClick="alert(xmldso.xml)">
<input type=button value=添加 onClick="xmldso.recordset.addNew(); bh.value=xmldso.recordset.recordcount;">
<input type=button value=删除 onClick="xmldso.recordset.Delete()">
</td>
<td align="right">
<input type=button class=navPoint value="9" title="第一条" onclick="xmldso.recordset.MoveFirst()">
<input type=button class=navPoint value="3" title="上一条" onclick="xmldso.recordset.MovePrevious(); if(xmldso.recordset.BOF) xmldso.recordset.MoveFirst();">
<input type=button class=navPoint value="4" title="下一条" onclick="xmldso.recordset.MoveNext(); if(xmldso.recordset.EOF) xmldso.recordset.MoveLast();">
<input type=button class=navPoint value=":" title="最后一条" onclick="xmldso.recordset.MoveLast()">
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script>
function locat(id) {
xmldso.recordset.MoveFirst();
while(id != bh.value)
xmldso.recordset.MoveNext();
}
function test() {
alert(xmldso.recordset.recordcount);
alert(xmldso.recordset.fields('姓名').value)
xmldso.recordset.Sort='-姓名'
//xmldso.recordset.reset()

}
function init() {
view.innerHTML = xmldso.transformNode(xsl_view.XMLDocument);
}

function sort(field) {
el = event.srcElement;
key = el.innerText.split(" ");
for(i=0;i<SortSpan.length;i++) {
SortSpan[i].innerHTML = ' ';
}
p = " ";
if(key[1] == "") p = "5";
if(key[1] == "5") p = "6";
el.innerHTML = key[0] + " <SPAN id=SortSpan>"+p+"</SPAN>";
sortField = xslsort.selectSingleNode("//@order-by");
sortField.value = (p=="5"?"+":"-")+field;
xmldso.loadXML(xmldso.transformNode(xslsort.XMLDocument));
}
</script>
wilowind 2006-06-06
  • 打赏
  • 举报
回复
补充:
最后一段 rs.fields(k) = aData[j][k];换成
rs.fields(k).value = aData[j][k];
也是不行的
wilowind 2006-06-06
  • 打赏
  • 举报
回复
up ag

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧