请教两个DataTable嵌套的问题

l646335072 2011-12-08 11:43:33
我datatable1中有a,b,c,d,e,f...
datatable2中有aa,sss,ewww,ggg,ccc,eee,ggg,eee,errr,ooo,ww,cnn,ssnfd,ww,pere,gdfod...
怎样把datatable2中的aa,sss,ewww归属为datatable1中的a
把datatable2中的ggg,ccc,eee,ggg归属为datatable1中的b
把datatable2中的eee,errr,ooo,ww归属为datatable1中的c
把datatable2中的cnn,ssnfd归属为datatable1中的d
把datatable2中的ww,pere,gdfod归属为datatable1中的e
...
如下:
a
aa,sss,ewww
b
ggg,ccc,eee,ggg
c
eee,errr,ooo,ww
d
cnn,ssnfd
e
ww,pere,gdfod
同时得到属于a的有几列,b的有几列,c的有几列,d的有几列...

...全文
590 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿非 2011-12-09
  • 打赏
  • 举报
回复
你要的数据在 DataTable中存的话 是

a www
a sfe
a sdf
a xsfs

这样的

就是说没有合并的效果
mad007 2011-12-09
  • 打赏
  • 举报
回复
同时得到属于a的有几列,b的有几列,c的有几列,d的有几列...

不太懂 你这是什么意思!
mad007 2011-12-09
  • 打赏
  • 举报
回复
是不是这样的?
insert into datatable1(a,b,c,d,e)
select aa+','sss+','ewww
,ggg+','ccc+','+eee+','+ggg
,eee+','+errr+','ooo+','+ww
,cnn+','+ssnfd
,ww+','pere+','+gdfod
l646335072 2011-12-09
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 sandy945 的回复:]
有能关联上的条件么?

你是要获得上图的 DataTable 形式

还是要在页面显示成那个形式
[/Quote]
有关联上的条件
从型号Z-002查出段号a b 质量
从段号a查出www、sfe、sdf、xsfs【组件号】
段号b查出dsfsdf,ssd,bdf,sfds【组件号】
段号质量查出001,002,003,004 【组件号】
页面显示我做好了,就上边的效果
我要获得DataTable 形式
上面的数据都已经导出到Excel中了
我要在Excel中实现上边的效果及控制Excel的样式
所以我的思路是:
段号a查出www、sfe、sdf、xsfs【组件号】
那段号a在Excel中就要合并4行单元格
那www、sfe、sdf、xsfs【组件号】
怎样对应上a呢,我就想到了用嵌套DataTable进行循环
得到组件号的行数,就这样来实现Excel跨行
组件号:
System.Data.DataTable dt = (System.Data.DataTable)Session["dtZUJianHao"];



阿非 2011-12-09
  • 打赏
  • 举报
回复
有能关联上的条件么?

你是要获得上图的 DataTable 形式

还是要在页面显示成那个形式
l646335072 2011-12-09
  • 打赏
  • 举报
回复
因为根据段号查出组件号的
段号又是根据型号查出来的
阿非 2011-12-09
  • 打赏
  • 举报
回复
如何知道

www、sfe、sdf、xsfs 是属于 a的
l646335072 2011-12-09
  • 打赏
  • 举报
回复
第一列是型号,第二列是段号,第三列是组件号
每一列绑定的数据都是用DataTable
件号
l646335072 2011-12-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 l646335072 的回复:]
引用 7 楼 sandy945 的回复:
贴点数据 来说明要显示的效果

最好有贴图

好的
[/Quote]
第一列是型号,第二列是段号,第三列是组件号,
每一列绑定的数据都是用DataTable
型号:
System.Data.DataTable dtp1 = (System.Data.DataTable)Session["dtXingHao"];
段号:
System.Data.DataTable dtp2 = (System.Data.DataTable)Session["dtDuanHao"];
组件号:
System.Data.DataTable dt = (System.Data.DataTable)Session["dtZUJianHao"];
我想把段号和组件号里面的值对应起来如上图
之后我要在Excel中做成这种样式的啊
谢谢了

l646335072 2011-12-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sandy945 的回复:]
贴点数据 来说明要显示的效果

最好有贴图
[/Quote]
好的

阿非 2011-12-09
  • 打赏
  • 举报
回复
贴点数据 来说明要显示的效果

最好有贴图
telankes2000 2011-12-09
  • 打赏
  • 举报
回复
2表之间要建立关联条件 最好是主从表


create table orders
(
orderno varchar(20),
ordername nvarchar(100),
primary key(orderno)
)

create table ordersItem
(
orderno varchar(20),
orderItem int,
Quantity decimal,
primary key(orderno,orderItem)
)

insert into orders(orderno,ordername)

select 'NO0001','订单名称1' union all
select 'NO0002','订单名称2' union all
select 'NO0003','订单名称3'


insert into ordersItem(orderno,orderItem,Quantity)
select 'NO0001',1,32 union all
select 'NO0001',2,234 union all
select 'NO0001',3,43 union all
select 'NO0002',1,56 union all
select 'NO0002',2,34 union all
select 'NO0003',1,67 union all
select 'NO0003',2,77 union all
select 'NO0003',3,56 union all
select 'NO0003',4,87

select a.orderno,a.ordername,b.orderItem,b.Quantity from orders a inner join ordersItem b on a.orderno=b.orderno)

/*
NO0001 订单名称1 1 32
NO0001 订单名称1 2 234
NO0001 订单名称1 3 43
NO0002 订单名称2 1 56
NO0002 订单名称2 2 34
NO0003 订单名称3 1 67
NO0003 订单名称3 2 77
NO0003 订单名称3 3 56
NO0003 订单名称3 4 87
*/
愚知 2011-12-09
  • 打赏
  • 举报
回复

<asp:Repeater id="rptCategories" runat="server">
<HeaderTemplate>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
</HeaderTemplate>
<ItemTemplate>
<!--分类名称-->
<tr><th><%# DataBinder.Eval(Container.DataItem, "TypeName") %></th></tr>
<!--分类下的产品-->
<asp:Repeater id="rptProduct" runat="server">
<ItemTemplate>
<tr><td><a href='ProductInfo.aspx?Id=<%# DataBinder.Eval(Container.DataItem, "ID") %>'><%# DataBinder.Eval(Container.DataItem, "ProductName") %></a></td></tr>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
参考下吧! 和datatable原理一样!
l646335072 2011-12-09
  • 打赏
  • 举报
回复
怎样把datatable2中的aa,sss,ewww归属为datatable1中的a
把datatable2中的ggg,ccc,eee,ggg归属为datatable1中的b
把datatable2中的eee,errr,ooo,ww归属为datatable1中的c
把datatable2中的cnn,ssnfd归属为datatable1中的d
把datatable2中的ww,pere,gdfod归属为datatable1中的e
比如:
a是datatable1中数据
aa,sss,ewww是datatable2中的数据
对应a的为【aa,sss,ewww】
怎样用嵌套把它们对应起来
l646335072 2011-12-09
  • 打赏
  • 举报
回复
好的,麻烦你帮我也看一下代码吧,我也开始调试了,谢谢了
阿非 2011-12-09
  • 打赏
  • 举报
回复
断点跟一下

两个可能,一是 没设置,而是被覆盖
l646335072 2011-12-09
  • 打赏
  • 举报
回复
哦,我现在写的代码:

//Excel中实现跨行显示
ArrayList arrayList = (ArrayList)Session["arrayListpz"]; //获取段号
string str = "";
for (int ilm = 0; ilm < arrayList.Count; ilm++)
{
System.Data.DataTable dt1 = GetTable1(arrayList[ilm].ToString()); //获取组件号
int count = dt1.Rows.Count;
if (count == 1)
{
rgp = ws.get_Range(ws.Cells[3, 2], ws.Cells[count + 1, 2]);
rgp.MergeCells = true;//合并单元格
}
else
{
for (int j = 0; j < count; j++)
{
string idz = dt1.Rows[j][0].ToString();
if (i == 0)
{
rgp = ws.get_Range(ws.Cells[3, 2], ws.Cells[count + 1, 2]);
rgp.MergeCells = true;//合并单元格
}
else
{
rgp = ws.get_Range(ws.Cells[3, 2], ws.Cells[count + 1, 2]);
rgp.MergeCells = true;//合并单元格
}
}
}
}
效果为:

还是不太对啊,b和质量都没了,请问这是咋了
阿非 2011-12-09
  • 打赏
  • 举报
回复
思路是这样的,如果当前行指定列的单元格内容和下一行同列的单元格一样

则当前单元格不操作,rowConut+1 (rowCount初值0)

直至出现当前行指定列的单元格内容和下一行同列的单元格不一样的时候

填充单元格,填充的范围从 当前单元格的行-rowCount开始 到当前单元格的行

就是总共跨 rowCount 行
l646335072 2011-12-09
  • 打赏
  • 举报
回复
下面这段代码怎样该才可以实现 Excel中实现跨行显示啊
请帮我改一下啊

//Excel中实现跨行显示
ArrayList arrayList = (ArrayList)Session["arr1"]; //获取段号
string str = "";
for (int i = 0; i < arrayList.Count; i++)
{
System.Data.DataTable dt1 = GetTable1(arrayList[i].ToString()); //获取组件号
int count = dt1.Rows.Count;
if (count == 1)
{

}
else
{
for (int j = 0; j < count; j++)
{
string idz = dt1.Rows[j][0].ToString();
if (i == 0)
{
rgp = ws.get_Range(ws.Cells[2, 2], ws.Cells[2, EndCount + 1]);
rgp.MergeCells = true;//合并单元格
}
else
{
rgp = ws.get_Range(ws.Cells[1, 1], ws.Cells[1, EndCount + 1]);
rgp.MergeCells = true;//合并单元格
}
}
}
}
l646335072 2011-12-09
  • 打赏
  • 举报
回复
跨行啊
加载更多回复(12)

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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