佩特来项目经验小集合(6)___ASP.NET模板页的读取

在佩特来售后管理系统流程中,其中有一个节点是故障分析,也就是将发回来的整机进行故障分析,传统的方法是将每个整机的故障信息录入一个Excel表,表格Excel样式:

这里是将Excel转换成模板页,然后根据需要替换模板中的标签,将功能完整展示,下面介绍在这个功能在项目中实现步骤:

1.将Excel转换为网页

打开Excel文档,单击菜单栏中的“文件”,找到“另存为”,如图所示。在"另存为" 窗口的“保存类型”,下拉菜单中找到“单个文件网页”。名称起自己想起的。

2.修改模板页

先看一下将Excel中模板头部及尾部生成的静态模板页(htm页),页面#号显示的部分都是需要替换的标签:

看一下这部分的代码实现,这些就是简单的HTML代码,由EXCEL转换的网页代码略微修改了下:

<body style="width: 95%; margin: 0 auto; padding: 20px;">
    <form name="form" method="post" action="#">
    [#ChaiFenID#]
    <table border="1px" style="border-collapse: collapse;">
        <tr style="text-align: center;">
            <td colspan="15" class="style1">
                起动机故障分析表(A类)
            </td>
        </tr>
        <tr>
            <td colspan="2" class="style2">
                出厂二维
            </td>
            <td colspan="5" class="style3">
                [#CCEWM#]
            </td>
            <td colspan="3" class="style2">
                售后二维码
            </td>
            <td colspan="5" class="style3">
                [#SHEWM#]
            </td>
        </tr>
        <tr>
            <td rowspan="2" class="style5">
                信息
            </td>
            <td class="style6">
                反馈单位
            </td>
            <td colspan="3" class="style7">
                [#FKDW#]
            </td>
            <td class="style6">
                反馈日期
            </td>
            <td colspan="2" class="style7">
                [#FKRQ#]
            </td>
            <td class="style5">
                型号
            </td>
            <td colspan="2" class="style7">
                [#XH#]
            </td>
            <td class="style5">
                序列号
            </td>
            <td colspan="3" class="style7">
                [#XLH#]
            </td>
        </tr>
        <tr>
            <td class="style6">
                三包机
            </td>
            <td class="style5">
                [#SBJ#]
            </td>
            <td class="style6">
                零公里机
            </td>
            <td class="style6">
                外观照片
            </td>
            <td colspan="5" class="style8">
            </td>
            <td colspan="3" class="style5">
                性能是否正常
            </td>
            <td colspan="2" class="style10">
                <input id="Radio1" type="radio" name="是" value="是" />是
                <input id="Radio2" type="radio" valule="否" />否
            </td>
        </tr>
        <tr>
            <td class="style5">
                故障<br />
                部件
            </td>
            <td class="style6">
                故障现象
            </td>
            <td class="style5">
                故障<br />
                现象
            </td>
            <td class="style6">
                故障现象
            </td>
            <td class="style5">
                故障<br />
                现象
            </td>
            <td class="style6">
                故障现象
            </td>
            <td class="style5">
                故障<br />
                现象
            </td>
            <td class="style6">
                故障现象
            </td>
            <td class="style5">
                故障<br />
                现象
            </td>
            <td class="style6">
                故障现象
            </td>
            <td class="style5">
                故障<br />
                现象
            </td>
            <td class="style6">
                故障现象
            </td>
            <td class="style5">
                故障<br />
                现象
            </td>
            <td class="style6">
                故障现象
            </td>
            <td class="style5">
                故障<br />
                现象
            </td>
        </tr>
        [#Body#]
        <tr>
            <td rowspan="2" class="style5">
                其它<br />
                J
            </td>
            <td class="style4">
                1用户解体
            </td>
            <td class="style5">
            </td>
            <td colspan="2" class="style4">
                缺件要备注
            </td>
            <td class="style4">
                2进异物
            </td>
            <td class="style5">
            </td>
            <td colspan="2" class="style4">
                进何异物要备注
            </td>
            <td class="style4">
                3进尘土
            </td>
            <td class="style5">
            </td>
            <td class="style4">
                4进水
            </td>
            <td class="style5">
            </td>
            <td class="style4">
                5进油
            </td>
            <td class="style5">
            </td>
        </tr>
        <tr>
            <td class="style4">
                6错装
            </td>
            <td class="style5">
            </td>
            <td colspan="2" class="style5">
            </td>
            <td class="style4">
                7穿钉断
            </td>
            <td class="style5">
            </td>
            <td class="style4">
                8整机锈蚀
            </td>
            <td class="style5">
            </td>
            <td class="style4">
            </td>
            <td class="style5">
            </td>
            <td class="style4">
            </td>
            <td class="style5">
            </td>
            <td class="style5">
            </td>
            <td class="style5">
            </td>
        </tr>
        <tr>
            <td class="style5">
                备注<br />
                K
            </td>
            <td class="style4">
                1
            </td>
            <td class="style5">
            </td>
            <td class="style4">
                2
            </td>
            <td class="style5">
            </td>
            <td class="style4">
                3
            </td>
            <td class="style5">
            </td>
            <td class="style4">
                4
            </td>
            <td class="style5">
            </td>
            <td class="style4">
                5
            </td>
            <td class="style5">
            </td>
            <td class="style4">
                6
            </td>
            <td class="style5">
            </td>
            <td class="style4">
                7
            </td>
            <td class="style5">
            </td>
        </tr>
        <tr>
            <td colspan="15" class="style11">
                注解:请在相应故障现象后空格内“√”、零件故障现象有照片存档的请用圆圈圈示前面数字编号。
            </td>
        </tr>
        <tr>
            <td class="style5">
            </td>
            <td colspan="2" class="style12">
                分析人:
            </td>
            <td colspan="4" class="style12">
            </td>
            <td class="style12">
            </td>
            <td colspan="3" class="style12">
                分析日期:
            </td>
            <td colspan="3" class="style12">
            </td>
            <td class="style12">
            </td>
        </tr>
    </table>
    <input type="button" name="query" onclick="return doSubmit();" language="javascript"
        value="提交" />
    </form>
</body>

3.ASP.NET读取模板页

ASP.NET读取模板页的方法如下,访问此页面的效果与生成的模板页一样:

   string mbPath = Server.MapPath("FaultMangaeTemplate.htm");  //模板页
        Encoding code = Encoding.GetEncoding("gb2312"); //字符编码
        StreamReader sr = null;
        string str = null;
        //读取
        try
        {
            sr = new StreamReader(mbPath, code);
            str = sr.ReadToEnd();
            str= str.Replace("[#Body#]", tableBody); //Replace方法,替换模板中需要替换的标签
            str = str.Replace("[#FKDW#]", enWXJD.DLSName);
            str = str.Replace("[#FKRQ#]", enWXJD.DDDate);
            str = str.Replace("[#XH#]", ljxh);
            str = str.Replace("[#ChaiFenID#]", "<input id=\"hidChaifenID\" type=\"hidden\" value=\"" + chaifenid + "\"/>");
            str = str.Replace("[#SBJ#]", "是");
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            sr.Close();
        }
        Response.Clear();
        Response.Write(str);
        Response.End();

上面生成的模板部分有些标签,看一下页面主体部分标签替换的html代码:

/// <summary>
    ///结合故障部件及部件故障信息,生成html
    /// </summary>
    private string  bindGZJBJXX()
    {
        string strHTML="";
        DataTable dtGZBJ = new BT_LJGZ_GZManage().QueryAllGZBJByGZZL("起动机");
        for (int i = 0; i < dtGZBJ.Rows.Count; i++)
        {
            if (i == 0)
            {
                strHTML = "<tr>  <td  class=\"style5\"";
            }
            else
            {
                strHTML += "<tr>  <td  class=\"style5\"";
            }
            strHTML += " rowspan=\"";
            DataTable dtGZXX = new BT_LJGZ_GZManage().QueryAllGZXXByGZBJ(Convert.ToInt32(dtGZBJ.Rows[i]["ID"]));
            double rowspan = Math.Ceiling((double)dtGZXX.Rows.Count / (double)7); //每行显示7个故障信息
            strHTML += Convert.ToString(rowspan);
            strHTML += "\">";
            strHTML += Convert.ToString(dtGZBJ.Rows[i]["GZBJ"]);
            strHTML += "</td>";
            for (int j = 0; j < dtGZXX.Rows.Count; j=j+7)
            {
                if (j % 7 == 0)
                {
                    if (j != 0) {
                        strHTML += "<tr>";
                    }
                    for (int z = j; z < j + 7; z++)
                    {
                        if (z < dtGZXX.Rows.Count)
                        {
                            strHTML += "<td  class=\"style4\">";
                            strHTML += Convert.ToString(dtGZXX.Rows[z]["GZMC"]);
                            strHTML += "</td>";
                            strHTML += "<td  class=\"style5\">";
                            strHTML += "<input value=\"" + dtGZXX.Rows[z]["ID"].ToString() + "\"";
                            strHTML += " name=\"input\" type=\"checkbox\" />";
                            strHTML += "</td>";
                        }
                        else {
                            strHTML += "<td  class=\"style4\">";
                            strHTML += "</td>";
                            strHTML += "<td  class=\"style5\">";
                            strHTML += "</td>";
                        }
                    }
                    strHTML +="</tr>";
                }
            }
        }
        return strHTML;
    }

下面看一下,功能实现的页面效果图:

这个功能就简单介绍到这里了,之所以会写下这篇博客,是由于这个功能的设计与实现是第一次做,刚开始实现这个功能的时候不知道从何入手,完成了发现其实它挺简单的,所有的经验都来自于经历,经历的多了,经验也就会多了!

时间: 2024-11-03 05:32:31

佩特来项目经验小集合(6)___ASP.NET模板页的读取的相关文章

佩特来项目经验小集合(2)___组合查询存储过程,报错 &amp;quot;varchar JBID=&amp;#39;&amp;#39; 转换成数据类型 int 时失败&amp;quot;

今天写一个组合查询的存储过程遇到这样一个问题:在将 varchar 值 'SELECT * FROM View_DLS_WXJD_Customer WHERE 1=1 and JBID ='' 转换成数据类型 int 时失败.错误详情如图所看到的: 经百度:字符串变量和整型变量连接不能用+连接. 于是我採用cast()函数将DLSJB这个整型变量转换成字符串,这样问题就攻克了. 正确代码例如以下所看到的: ALTER PROCEDURE [dbo].[Proc_SH_WXJDList] @DH

佩特来项目经验小集合(2)___组合查询存储过程,报错 &quot;varchar JBID=&#39;&#39; 转换成数据类型 int 时失败&quot;

今天写一个组合查询的存储过程遇到这样一个问题:在将 varchar 值 'SELECT * FROM View_DLS_WXJD_Customer WHERE 1=1 and JBID ='' 转换成数据类型 int 时失败.错误详情如图所示: 经百度:字符串变量和整型变量连接不能用+连接.于是我采用cast()函数将DLSJB这个整型变量转换成字符串,这样问题就解决了.正确代码如下所示: ALTER PROCEDURE [dbo].[Proc_SH_WXJDList] @DH varchar(

佩特来项目经验小集合(5)___系统流程设计

在佩特来项目设计中有一个流程设计问题,虽然.NET 和Java都有工作流,但是考虑到这个项目小,这里就简单的借用一点工作流的思想,设计了几张表,然后通过代码来控制流程.下面以"维修鉴定单业务流程"中的有实物流程为例,谈一下具体的流程设计.有实物的维修鉴定业务流程包含大致步骤:代理商填单.打印二维码.拆包.沟通转办.拆分.故障分析.各角色对费用进行审批.费用提交到费用池(统计各代理商金钱的地方).维修鉴定单流程见下图: 因为系统中不止这一个业务流程,所以系统流程设计的表有任务表(如维修鉴

佩特来项目经验小集合(1)___js获取前一页面url中传来的值

页面跳转代码: src="AddCLFFour.aspx?ID=<%= Request.QueryString["ID"].ToString() %>"> ,通过" Request.QueryString["ID"].ToString()" 向AddCLFFour传参数ID,在AddCLFFour页面如何获取页面传过来的ID值呢? 下面提供三种方法,简单介绍如何实现js获取前一页面传来的值 1.最简单的方法 

佩特来项目经验小集合(3)___从多表统计金额汇总到一张表

来这个项目主要是佩特来公司各部门及各代理商使用的系统,这个系统其中的一下功能就是统计代理商费用.费用的统计放在了费用池(传统方式统计代理商费用就叫费用池)数据表中,代理商可以根据费用池的中的金额购买东西,费用池中的钱来自于代理商每次填写的维修鉴定单中. 下面看一下这部分的数据表结构: 下面的存储过程是汇总材料费及其他费用表的费用并汇总到费用池信息表的存储过程,这段代码有点长,加入了各种判断: -- ============================================= --

佩特来项目经验小集合(4)___SQL SERVER的逆向工程,将数据库导入到PowerDesigner中

PD是一款不错的数据库设计工具,在佩特来这个项目中,起初,合作伙伴用PD大体设计了10张表,我们在项目开发的时候直接采用正向工程,将PD设计的数据库直接导入SQLServer中即可创建数据库及表结构,随着项目的开发,我们对表结构及表数量等进行了更改,为了保证数据库与PD图的一致性,这里我们采用逆向工程,将数据库导入到PD中,Oracle.SqlServer等数据库,都是可以采用逆向工程将数据库导入到PD中的.SqlServer逆向工程,首先需要建立一个数据库的连接,然后再进行逆向工程操作.下面简

小项目创意大集合

每个程序员都可以入手的小项目创意大集合 我经常看有人发帖问关于软件项目创意点子的事,也看到了很多回帖,我自己也回了一些常见的软件项目创意.不过我觉得只列出三两个是远远不够的,因此就收集并这个软件项目创意列表,大家要找简单的编程软件项目创意学习练手的话,可以收藏并扩散本文.这些软件项目创意并不是论文级别的,只是想抛砖引玉让大家能从中受些启发. 下面你们会看到 120 多个个软件项目创意想法,都是我通过头脑风暴得来的.我将其根据主题分成了10 个分类,但有些软件项目创意其实涵盖了不止一个主题. 更新

一中项目经验总结

        最近在连海师哥的带领下,和慕夏一起做廊坊一中评教的项目,从软考到现在差不多有一个多月的时间了.除了机房合作,这算是第一次真正的去实战一个项目.下面是一些小的经验,当作积累吧.         一.原型图        原形图我们都记不清迭代了多少次了,原型图是未来系统的原形,也就是软件的界面,展现给用户最直观的东西.对开发人员来书原型图也是十分重要的,后面的实体.类图和数据库的设计都离不开它,原型图我们大概花了十天的时间,虽然有些长,却十分重要.         经验累积:  

暑期报修项目经验分享二(附原码)

楔子 第二期项目经验分享,其实整个项目流程,我们只是参与了其中一小部分,仅仅是添加了材料管理模块的内容,在第一期的实践里面,主要维护材料类别的增查改操作.二期维护做的是材料出入库处理,因为我处理的是入库管理这一块,所以分享下做这一块的经验. 需求分析: 在分析业务需求的时候,因为考虑到出入库在一张数据表里面,即是共用数据,那么type区分出入库,在写代码的时候一个反人类的操作就是把流水号设置成整形,虽然影响不大,另外关于材料类别代码这里,因为材料类别是三级联动设置,所以我们只取最后一级的代码,因