当前位置:编程学习 > C#/ASP.NET >>

高手帮忙啊 为什么合并不了两个dataset的数据啊

//进行read的合并操作
Response.Write("infront:" + readin.Tables[0].Rows.Count + "|" + read.Tables[0].Rows.Count + ",back:");
read.Merge(readin, true, MissingSchemaAction.Add);
Response.Write(read.Tables[0].Rows.Count+"<br>");


结果是:infront:2|2,back:2  为什么合并不了呢??谢谢 --------------------编程问答-------------------- 声明一下:readin和read里面的数据结构一样 --------------------编程问答-------------------- 高手帮忙啊 谢谢啊 --------------------编程问答-------------------- 重发一下


read=get_dataset("select * from news where classid=1");

readin=get_dataset("select * from news where classid=2");

//进行read的合并操作
Response.Write("infront:" + readin.Tables[0].Rows.Count + "|" + read.Tables[0].Rows.Count + ",back:");
read.Merge(readin, true, MissingSchemaAction.Add);
Response.Write(read.Tables[0].Rows.Count+"<br>");


结果是:infront:2|2,back:2  为什么合并不了呢??谢谢


我只想问的是为什么合并之后没有更新,不是别的  谢谢
--------------------编程问答-------------------- 帮鼎鼎. --------------------编程问答-------------------- 更新了呀,不更新怎么会是2呢 --------------------编程问答-------------------- readin.Tables[0].Rows.Count要加.ToString()吧 --------------------编程问答-------------------- up --------------------编程问答-------------------- mark --------------------编程问答-------------------- 除非的两个表的模式不一样 ....

对于 DataSet 实际上会合并的是 DataTable,因此要合并的 DataTable.TableName 要一致,
否则假如参数  missingSchemaAction == MissingSchemaAction.Add 就作为新表添加了

1。
首先,你应该学会自己【调试代码,发现问题所在】

比如
你应该检查合并之后,DataSet 的表数目是否多了一个
Response.Write(read.Tables.Count);

再如,你应该尝试该参数 missingSchemaAction 
read.Merge(readin, true, MissingSchemaAction.Error); // 此时,如果两个 DataSet 模式不一致,就会报错,会给你有用的信息

2。
请尝试,

// a.
readin.Tables[0].TableName = read.Tables[0].TableName;
read.Merge(readin, true, MissingSchemaAction.Add);

// b.
read.Tables[0].Merge(readin.Tables[0], true, MissingSchemaAction.Add); --------------------编程问答-------------------- 楼上说的有理  加个断点试试  

再就是两个表中的 列要一致! --------------------编程问答-------------------- mark 学习了 --------------------编程问答-------------------- Jinglecat已经说的很详细了,如果两个DataSet的结构是一样的话,完全没有必要采用3个参数重载的Merge()方法。read.Merge(readin);就可以了。 --------------------编程问答-------------------- <HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
</HEAD>
<BODY>
用inner Join可以做到一个表返回纪录,速度要快些。<br/>

select * from 主表 inner Join 从表 on 主表.外键=从表.id<br/>

如果要显示上合并行,可以在客户端合并<br/>

 <TABLE WIDTH=75% BORDER=1 CELLSPACING=1 CELLPADDING=1 id="tb">
<TR id="row">
<TD id="td">1</TD>
<TD>a</TD>
<TD>b</TD>
</TR>
<TR>
<TD>1</TD>
<TD>c</TD>
<TD>d</TD>
</TR>
<TR>
<TD>1</TD>
<TD>c</TD>
<TD>d</TD>
</TR>
<TR>
<TD>2</TD>
<TD>e</TD>
<TD>f</TD>
</TR>
<TR>
<TD>2</TD>
<TD>e</TD>
<TD>f</TD>
</TR>
<TR>
<TD>2</TD>
<TD>e</TD>
<TD>f</TD>
</TR>
<TR>
<TD>2</TD>
<TD>e</TD>
<TD>f</TD>
</TR>
</TABLE>
<SCRIPT LANGUAGE=javascript>
 
 
var Rows=document.getElementById("tb").rows;
var Col=1;//这个是要合并的第几列;
var lastValue;

 for(i=0;i<Rows.length;i++)
 {
lastValue=Rows[i].cells[Col-1].innerHTML;
var same=1;
 
while(lastValue==Rows[i+same].cells[Col-1].innerHTML )
{  
Rows[i+same].removeChild(Rows[i+same].cells[Col-1]);
same+=1;
if((i+same)==Rows.length )
{
break;
}

 
Rows[i].cells[Col-1].rowSpan=same;
i=i+same-1;
 }
</SCRIPT>


</BODY>
</HTML>
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,