﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-liangchao-随笔分类-.net资料</title><link>http://www.cnitblog.com/liangchao/category/3414.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 29 Sep 2011 06:49:17 GMT</lastBuildDate><pubDate>Thu, 29 Sep 2011 06:49:17 GMT</pubDate><ttl>60</ttl><item><title>利用Repeater解决DataGrid的嵌套显示问题</title><link>http://www.cnitblog.com/liangchao/archive/2006/08/14/15212.html</link><dc:creator>BEYOND</dc:creator><author>BEYOND</author><pubDate>Mon, 14 Aug 2006 00:53:00 GMT</pubDate><guid>http://www.cnitblog.com/liangchao/archive/2006/08/14/15212.html</guid><wfw:comment>http://www.cnitblog.com/liangchao/comments/15212.html</wfw:comment><comments>http://www.cnitblog.com/liangchao/archive/2006/08/14/15212.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/liangchao/comments/commentRss/15212.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/liangchao/services/trackbacks/15212.html</trackback:ping><description><![CDATA[
		<p>
				<span id="span_Title"> 一直以来,客户需要在WEB上面显示嵌套的数据页面,如下图所示:<br /><img src="http://www.agilelabs.cn/photos/e5b7a5e4bd9c/images/167/original.aspx" /><br />  而我们的项目全部统一采用DataGrid来进行数据的绑定显示.对于这种嵌套数据的显示,我一直头疼.在网上搜了N种方法:采用嵌套DataGrid...手动在数据绑定的时候进行一些额外操作分割单元格.....全部都麻烦得要死.今天总算在CodeProject上面找到一种方便点的方法:采用Repeater来解决这个问题.<br />    首先,来看下我的DataGrid中列的html代码:</span>
		</p>
		<div>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">asp:BoundColumn </span>
				<span style="COLOR: #ff0000">Visible</span>
				<span style="COLOR: #0000ff">="False"</span>
				<span style="COLOR: #ff0000">DataField</span>
				<span style="COLOR: #0000ff">="ID"</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">asp:BoundColumn</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">asp:BoundColumn </span>
				<span style="COLOR: #ff0000">DataField</span>
				<span style="COLOR: #0000ff">="OrganName"</span>
				<span style="COLOR: #ff0000">HeaderText</span>
				<span style="COLOR: #0000ff">="部门名称"</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">asp:BoundColumn</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">asp:TemplateColumn </span>
				<span style="COLOR: #ff0000">HeaderText</span>
				<span style="COLOR: #0000ff">="员工"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">ItemTemplate</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />        </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">FONT </span>
				<span style="COLOR: #ff0000">face</span>
				<span style="COLOR: #0000ff">="宋体"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />            </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">asp:Repeater </span>
				<span style="COLOR: #ff0000">id</span>
				<span style="COLOR: #0000ff">="Repeater1"</span>
				<span style="COLOR: #ff0000">runat</span>
				<span style="COLOR: #0000ff">="server"</span>
				<span style="COLOR: #ff0000">DataSource</span>
				<span style="COLOR: #0000ff">='&lt;%# </span>
				<span style="COLOR: #ff0000">((System.Data.DataRowView)Container.DataItem).Row.GetChildRows("parentchild") %</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">'&gt;<br />                </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">HeaderTemplate</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">table</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">HeaderTemplate</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">ItemTemplate</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">tr</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                        </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">td</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"># DataBinder.</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">Eval</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(Container.DataItem,</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">[\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">EmployeeName</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">]</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">td</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                    </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">tr</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">ItemTemplate</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">FooterTemplate</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                    </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">table</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">FooterTemplate</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />            </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">asp:Repeater</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">FONT</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />    </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">ItemTemplate</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">asp:TemplateColumn</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<br />其中的ID列表示机构的ID,用来和员工信息中的机构ID进行"关联".<br /><br /><br />再来看关键代码<br /><span style="COLOR: #000000">                DataSet ds </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"></span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> DataSet();<br /><br />                DataTable dtOrgan </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"></span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> DataTable();<br />                dtOrgan.Columns.Add(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ID</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">));<br />                dtOrgan.Columns.Add(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">OrganName</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">));<br />                ...<br />                </span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">...往机构表中灌数据...</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br />                ds.Tables.Add(dtOrgan);<br /><br />                DataTable dtEmployee </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"></span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> DataTable();<br />                dtEmployee.Columns.Add(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">OrganID</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">));<br />                dtEmployee.Columns.Add(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">EmployeeName</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">typeof</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">));<br />                ...<br />                </span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">...往员工表中灌数据...</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br /><br />                ds.Tables.Add(dtEmployee);<br />                ds.Relations.Add(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">parentchild</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,ds.Tables[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].Columns[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ID</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">],ds.Tables[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].Columns[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">OrganID</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">]);<br />                dgList.DataSource </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ds.Tables[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].DefaultView;<br />                dgList.DataBind();<br /><br />最主要的就是利用了DataSet的Relations的属性,通过属性来将父子表关联起来,然后进行数据的绑定.最后,在WEB上运行出来的效果如下所示:<br /><img src="http://www.agilelabs.cn/photos/e5b7a5e4bd9c/images/166/original.aspx" /></span></div>
<img src ="http://www.cnitblog.com/liangchao/aggbug/15212.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/liangchao/" target="_blank">BEYOND</a> 2006-08-14 08:53 <a href="http://www.cnitblog.com/liangchao/archive/2006/08/14/15212.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>