[主细表 / Master-Detail]Repeater 作北风数据库的主表明细(Master-Detail),HTML表格 搭配 DataBinding Expression(数据绑定表达式)
这是我的备份,原文请看:
Repeater 作北风数据库的主表明细(Master-Detail)
阅读本文之前,请先确定您有以下的基本观念与操作技巧:
[主细表/主表明细] GridView+SqlDataSource,一行程序代码都不用写。书本(上集)9-1节内容公开
http://www.dotblogs.com.tw/mis2000lab/archive/2008/12/02/gridview_sqldatasource_1202.aspx
------------------------------------------------------------------------------------------
在论坛上遇见有人发问类似问题,
刚好我上课也教到 Repeater,所以提供这个范例来作为补充习题。
做为书本「上集」 Ch. 12 Repeater的范例补充(Case Study)
Repeater很适合用来搭配美工人员做好的HTML码
加上样版(Template)的特性
与 DataBinding Expression((数据绑定表达式) 如 <% # Eval("字段名称")%>)
可以在画面上,做好定位(输出比较漂亮,不会乱掉)
==================================================================================
执行成果如下:
第一个画面,订单主文件。
透过超级链接,可以看见这笔订单的所有数据
第二,用 Repeater + HTML表格 + DataBinding Expression(数据绑定表达式 如 <% # Eval("字段名称")%>)
做成 北风数据库 的 主表明细(Master-Detail)
上图里面的「每一个字段」的值,都是透过 DataBinding Expression(数据系结表达式 如 <% # Eval("字段名称")%>) 来呈现。
这样就能「定位」在 HTML表格的各个格子内。
==================================================================================
第一,我们先做好HTML的画面
透过传统的 HTML表格(<Table>)做好我们想要的画面
后续有范例下载,我会提供三个HTML网页,让大家参考。
第二,把上述的 HTML表格,放到Repeater的「样版(Template)」里面
北风数据库的「订单」数据表,共有两个。
需要呈现在画面上的地方,就自己撰写DataBinding Expression(数据系结表达式 如 <% # Eval("字段名称")%>)
然后搭配 SqlDataSource即可。
不过,北风数据库的订单主文件(Orders数据表)经过正规化
有些缺点(人员阅读不易)
[主细表/ 主表明细]Ch.9-1节,北风数据库(NorthWind)一份订单明细 (SQL Join 关系型数据表)
http://www.dotblogs.com.tw/mis2000lab/archive/2011/12/05/northwind_order_master_detail_20111205.aspx
如果您想要改善的话,上述的文章已经解说过。
以下的范例,是「第一个」执行画面的 .aspx档内容
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<HeaderTemplate>
<table border="1" width="90%" id="table2">
<tr>
<td align="center" bgcolor="#0000FF">
<font color="#FFFFFF"><b>OrderID</b></font>
</td>
<td align="center" bgcolor="#0000FF">
<font color="#FFFFFF"><b>CustomerID</b></font>
</td>
<td align="center" bgcolor="#0000FF">
<font color="#FFFFFF"><b>EmployeeID</b></font>
</td>
<td align="center" bgcolor="#0000FF">
<font color="#FFFFFF"><b>OrderDate</b></font>
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<a href="Repeater_NorthWind_Table2.aspx?OrderID=<%# Eval("OrderID")%>" target="_blank">
<big><b><%# Eval("OrderID")%></b></big>
</a>
</td>
<td>
<%# Eval("CustomerID")%> -- <%# Eval("B_CompanyName")%>
</td>
<td>
<%# Eval("EmployeeID")%> -- <%# Eval("C_LastName")%>
</td>
<td>
<%# Eval("OrderDate", "{0:yyyy/MM/dd}")%>
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr>
<td bgcolor="#CECEFF">
<a href="Repeater_NorthWind_Table2.aspx?OrderID=<%# Eval("OrderID")%>" target="_blank">
<big><b>
<%# Eval("OrderID")%></b></big> </a>
</td>
<td bgcolor="#CECEFF">
<%# Eval("CustomerID")%>
--
<%# Eval("B_CompanyName")%>
</td>
<td bgcolor="#CECEFF">
<%# Eval("EmployeeID")%>
--
<%# Eval("C_LastName")%>
</td>
<td bgcolor="#CECEFF">
<%# Eval("OrderDate", "{0:yyyy/MM/dd}")%>
</td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand="select A.*, B.CompanyName As B_CompanyName, C.LastName As C_LastName
from orders A, Customers B, Employees C
where A.CustomerID = B.CustomerID And A.EmployeeID = C.EmployeeId">
</asp:SqlDataSource>
<br />
<br />
詳細的HTML表格,可以參閱<span class="style1"><strong>目錄「Repeater_HTML_Sample」</strong></span><br />
这个范例不需要写程序。
但您必须熟悉:
第一,HTML。会自己设计画面。
第二,SQL指令稍微了解,有用到Join。
说难不难
您如果不会,都不是 ASP.NET的东西不会,
而是「HTML码」与「SQL指令」不熟悉
另外一个初学者比较不理解的东西,就是
DataBinding Expression(数据绑定表达式 如 <% # Eval("字段名称")%>)
关于「主细表」,本网站共有以下文章:
http://www.dotblogs.com.tw/mis2000lab/Tags/%E4%B8%BB%E8%A1%A8%E6%98%8E%E7%B4%B0/default.aspx
范例下载:Ch12_Repeater_NorthWind.rar
这个范例都是在画面上完成,没有写程序。 所以没有 VB / C#的差别。
简单地说,只要开发工具的「操作」熟练的话,绝对能在15~20分钟以内搞定
如果连这样的范例(小变化),您都作不出来的话。
建议您来上课,或是买些好书来练习
很多初学者以为自己功力很好了,不屑上「入门课」
那就看看以下文章,自己评估一下啰。
==========================================================================================
下面这篇文章讲到的,在「入门实战班」都会学到。
内容保证比其它书本与补习班更深入、充实!
(拜托您一定要看一下)
[自我评量表] ASP.NET 我该上什么课?入门、或是进阶?.....
==========================================================================================
............................. 与其零散地找范例、四处组合一些片段的程序....不如一次学通ASP.NET的心法!
............................. 如何选择补习班? 最贵的就是「师资成本」
............................. 不要练功练了三年,才发现自己必须「砍掉重练」!
http://product.dangdang.com/product.aspx?product_id=20583373&ref=search-1-pub
ASP.NET案例精编——适用于VS 2005/2008(配光盘)
....................................................................................................寄信给我 mis2000lab (at)雅虎.com.台湾 ........
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)