[主细表 / Master-Detail]Repeater 作北风数据库的主表明细(Master-Detail),HTML表格 搭配 DataBinding Expression(数据绑定表达式)...

本文介绍使用Repeater结合HTML表格和DataBindingExpression实现北风数据库的主表明细展示,通过超级链接可查看订单详细信息。无需编写额外代码,仅需熟悉HTML和SQL Join操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[主细表 / Master-Detail]Repeater 作北风数据库的主表明细(Master-Detail),HTML表格 搭配 DataBinding Expression(数据绑定表达式)

 

这是我的备份,原文请看:

http://www.dotblogs.com.tw/mis2000lab/archive/2012/03/20/repeater_northwind_master_detail_20120320.aspx

 

 

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.周栋祥博士,吴进鲁 编著,吴盛博士 审校

出 版 社:清华大学出版社

出版时间:2009-5-1

 

 

 

 

 

 

转载于:https://www.cnblogs.com/mis2000lab/archive/2012/04/10/Repeater_DataBinding_Master_Detail.html

<think>好的,我现在需要帮助用户解决他们遇到的无法访问JAR文件的问题。首先,用户运行了命令`java -jar repeater-console/repeater-console-start/target/repeater-console.jar`,但提示错误,无法访问jar文件。我需要分析可能的原因,并给出解决方案。 首先,我应该考虑常见的几个可能性。首先,jar文件可能不存在。这可能是因为项目没有正确构建,或者构建后的jar文件没有被生成。用户之前可能执行过`mvn clean install`,但也许构建失败了,或者构建过程中跳过了某些模块,比如使用了`-Dmaven.test.skip=true`参数,导致某些测试没有通过,进而导致构建没有完成。因此,首先需要确认构建是否成功,并且目标jar文件确实存在于指定路径。 其次,路径是否正确。用户执行的命令中的路径是相对路径,是否正确呢?用户当前所在的目录是`~/jvm-sandbox-repeater (master)`,而jar文件的路径是`repeater-console/repeater-console-start/target/repeater-console.jar`。也就是说,从项目根目录进入repeater-console子模块下的repeater-console-start模块的target目录。需要确认用户是否在正确的目录下执行命令,或者是否存在路径拼错误,比如目录名是否正确,是否有大小问题(尤其是在Windows系统中,但用户使用的是MINGW64,可能对大小敏感)。 另外,是否有权限问题?在Linux或类Unix系统中,可能存在文件权限问题,导致无法读取jar文件。但用户使用的是MINGW64,可能是在Windows下的Git Bash环境中运行,需要考虑Windows的文件权限设置,或者文件是否被其他进程占用。 接下来,可能的构建问题。如果用户之前构建项目时跳过了测试(比如使用了`-Dmaven.test.skip=true`),但可能存在编译错误,导致jar文件没有被正确生成。这时候需要建议用户重新构建项目,并观察构建过程中是否有错误信息,特别是目标模块是否被正确编译和打包。 还有可能是模块结构问题。项目可能是一个多模块的Maven项目,repeater-console是其中一个子模块。需要确认在构建整个项目时,该子模块是否被正确构建。如果用户只构建了部分模块,或者构建顺序有问题,可能导致该jar文件未被生成。 此外,jar文件名称是否正确?用户提到的是repeater-console.jar,但实际构建生成的jar文件名可能包含版本号或其他后缀,比如repeater-console-1.0.0.jar。这时候需要用户检查target目录下实际存在的jar文件名,或者确认pom.xml中的配置是否正确指定了最终的jar文件名。 现在,我需要将上述可能性整理成一个结构化的回答,帮助用户逐步排查问题。首先,建议用户检查文件是否存在,然后确认构建是否成功,再检查路径是否正确,最后处理可能的权限或配置问题。同时,给出具体的命令示例,比如如何列出目录内容,如何重新构建项目,以及如何检查构建日志中的错误信息。 另外,用户之前的问题中已经涉及到Maven的配置,可能用户对Maven有一定的了解,但可能在构建过程中遇到了问题,所以需要强调构建步骤的正确性,并指导如何验证构建是否成功。同时,可能需要提醒用户关于多模块项目的构建顺序,或者是否需要单独构建某个子模块。 最后,考虑到用户可能不熟悉终端操,给出具体的命令示例和步骤,帮助他们逐步执行,并观察结果。例如,使用`ls`命令检查文件是否存在,使用`cd`切换目录,或者使用绝对路径来执行jar文件,以排除相对路径的问题。 总结,我需要分步骤引导用户检查文件是否存在、构建是否成功、路径是否正确、文件名是否匹配,以及可能的权限或配置问题,并提供相应的解决方法和命令示例。</think>--- ### **问题定位** 根据错误提示`Unable to access jarfile`,核心原因是**JAR文件路径不可达**。可能场景包括: 1. 文件未生成(构建失败或未编译) 2. 路径错误(目录层级不匹配) 3. 文件名不一致(版本号缺失或拼错误) --- ### **分步排查指南** #### **1. 验证JAR文件存在性** 在终端执行以下命令,确认文件实际路径: ```bash # 进入目标目录(根据项目结构调整路径) cd repeater-console/repeater-console-start/target/ # 列出所有JAR文件 ls -la *.jar ``` **预期输出**: ``` -rw-r--r-- 1 user 197609 15MB Aug 10 10:00 repeater-console-1.0.0.jar ``` #### **2. 检查Maven构建状态** 若文件缺失,需重新构建项目并观察日志: ```bash # 返回项目根目录 cd ../../../../ # 完整构建(跳过测试) mvn clean install -Dmaven.test.skip=true ``` **关键检查点**: - 输出中是否包含`BUILD SUCCESS` - 是否出现`repeater-console-start`模块的`[INFO] Building jar`日志项 #### **3. 路径修正方案** 若文件存在但路径不匹配,可通过以下方式修正: - **绝对路径调用**(替换实际路径): ```bash java -jar /c/Users/23094/jvm-sandbox-repeater/repeater-console/repeater-console-start/target/repeater-console-*.jar ``` - **通配符匹配**(自动适配版本号): ```bash java -jar repeater-console/repeater-console-start/target/repeater-console-*.jar ``` --- ### **常见问题解决方案** | 问题类型 | 现象 | 修复方法 | |---------|------|----------| | **构建失败** | Maven日志出现`COMPILATION ERROR` | 检查JDK版本兼容性(需1.8)<br>在`pom.xml`中添加:<br>```xml<br><maven.compiler.source>1.8</maven.compiler.source><br><maven.compiler.target>1.8</maven.compiler.target>``` | | **文件名不匹配** | 实际文件含版本号(如`repeater-console-1.0.0.jar`) | 修改启动命令:<br>```bash<br>java -jar repeater-console/repeater-console-start/target/repeater-console-1.0.0.jar``` | | **权限问题** | `Permission denied`错误(Linux/WSL环境) | 添加执行权限:<br>```bash<br>chmod +x repeater-console/repeater-console-start/target/*.jar``` | --- ### **扩展验证** #### **手动解压检查(可选)** 如果怀疑JAR文件损坏,可尝试解压验证: ```bash # 进入target目录 cd repeater-console/repeater-console-start/target/ # 解压JAR文件(替换实际文件名) jar xvf repeater-console-1.0.0.jar # 检查核心配置文件 ls -l BOOT-INF/classes/application.properties ``` --- ### **环境联动建议** 1. **IDE直接运行** 在IntelliJ/Eclipse中: - 右键`repeater-console-start`模块 → `Run 'repeater-console'` - 避免路径错误问题 2. **Docker化部署(高阶)** 添加Dockerfile: ```dockerfile FROM openjdk:8-jre COPY target/repeater-console-*.jar /app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` 构建命令: ```bash docker build -t repeater-console . docker run -it --rm repeater-console ``` --- 如需进一步分析,请提供以下信息: 1. `pom.xml`中`repeater-console-start`模块的打包配置 2. 完整的Maven构建日志(从`mvn clean install`开始)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值