动态生成数据--零散烈士陵园【广宁县】
C#动态生成数据篇
第一篇:测试动态生成数据(测试篇):
TODO:
关于测试篇:主要讲解理清业务思路,下一篇:动态生成数据(依据业务需求):
TODO:
1,输入生成数据
2,两种方式生成动态数据(这里采用服务器端应用程序生成数据)
讲解篇:1,服务端aspx,2,服务端后台
服务端aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="LSLSM.aspx.cs" Inherits="BF.Web.lsly.LSLSM" %>
广宁县零散烈士陵园
服务端后台
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BF.Model;
using BF.IBLL.lsly;
using Base.Core.UnityFactory;
using System.Configuration;
using BF.Common;using System.Diagnostics;namespace BF.Web.lsly
{public partial class LSLSM : BasePage{private Int32 DynamicCount { get; set; } //零散烈士陵园(广宁县):烈士墓数量private string GetLSLSMkey{get{return ConfigurationManager.AppSettings["sOrgKey"].ToString();//机构编码:当前登录用户(如:广宁县机构key:5132b925-4a58-459c-8077-5ea54754d69a)}}/*[编辑]使用属性SMartyrKey代替方法GetMartyrKeyBysRelationKey获取[烈士key:sMartyrKey] 2015/03/18 [方]*//*[编辑]属性SMartyrKey名称,书写调整(sMartyrKey变更SMartyrKey;自定义私有字段smartyrKey变更_smartyrKey) 2015/04/22 [方] */private string _smartyrKey;//自定义私有属性_smartyrKeypublic string SMartyrKey{get{if (!string.IsNullOrEmpty(_smartyrKey)){MartyrsAssociation modelAssoc = new MartyrsAssociation();modelAssoc.sRelationKey = _smartyrKey;//烈士墓key:烈士key(烈士和烈士墓关联获取烈士key)modelAssoc = iLSLSMBLL.GetModel(modelAssoc);//烈士和烈士墓关联实体_smartyrKey = modelAssoc.sMartyrKey;//[sMartyrKey 烈士key]}return _smartyrKey;//这里取出私有属性_smartyrKey的值}}private readonly Imemorial_MartyrTombBLL iLSMBLL = IOCFactory.GetIOCResolve("Imemorial_MartyrTombBLL");//烈士墓接口private readonly IMartyrsAssociationBLL iLSLSMBLL = IOCFactory.GetIOCResolve("IMartyrsAssociationBLL");//烈士和烈士墓关联信息接口protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){/*[编辑]零散烈士墓方法 2015/03/18 [方]*/DynamicCreation();}}/*[新增]动态生成表格:接收一参数,实现查询数据库<获取数量> 按照现有风格排序 2015/03/10 [方]*//*Tips:1、在后台写C#程序,取得当前要操作的键值,然后根据键值查询数量[填充数据项](烈士系统中正在使用)2、JS打印,AJAX读取数据库数据[填充数据项](暂时用不到)* */#region [广宁县零散烈士陵园]public void DynamicCreation(){/*[测试:数据项来自于零散烈士墓信息] 根据传入条件查询[dbo.memorial_MartyrTomb]列表数据项*/StringBuilder sb = new StringBuilder();/*数据源:烈士墓,烈士和烈士墓*/List list = new List();memorial_MartyrTomb model = new memorial_MartyrTomb();model.sOrgKey = GetLSLSMkey;list = iLSMBLL.GetList(model);if (list != null){DynamicCount = list.Count() - 1;}/*方法实现*/if (DynamicCount > 0){int numberOfRows = DynamicCount / 20;//行数int remainderRows = DynamicCount % 20;//行数余数/*20 40 60,... 行数处理:行数减一,以便打印重复行*/if (remainderRows == 0){numberOfRows = numberOfRows - 1;}int multiple = DynamicCount / 2;//倍数int remainder = DynamicCount % 2;//余数/*TODO:左边是2的奇数倍 右边是2的偶数倍[依据:倍数,余数]20为一行[单位:行数(20一行)],逐次计算[依据第一行],[特殊处理]补空td[特殊处理]合并多行一起遍历*//*[编辑]动态生成表格:合并行(第一行和其它行合并) 2015/03/10 [方]*/for (int i = 0; i <= numberOfRows; i++)//遍历行数{/*排版风格:依据园区英烈.html*/sb.Append("");sb.Append("");/*[编辑]动态生成表格:每一行第一列[新增]行编号 2015/03/11 [方]*/string input = (i + 1).ToString();input = GetRowsName(input);sb.Append(input);sb.Append("");sb.Append("");sb.Append("");for (int j = 1; j <= 20; j++){/*[特殊处理]:判断当前行,当前列是否有值:有,打印td 没有,补空td*//*[思路]:左边,以19为单位,逐次累加20 与 当前数量比对*/int tempOdd = 19 + (20 * i);//左边计算单位:19+20的倍数string skey = "";//[sRelationKey 烈士墓key]string lsm = "";//[暂时:作为烈士名 后期待调整]string sLSSkey = "";//[sMartyrKey 烈士key]if (j <= 10){int rewritetempOdd = ((tempOdd - (2 * (j - 1))) - 1);if (DynamicCount < rewritetempOdd){sb.Append("- ");sb.Append("
");}else{sb.Append("- ");skey = list[rewritetempOdd].sKey;//[sRelationKey 烈士墓key]lsm = list[rewritetempOdd].sJieS;//[暂时:作为烈士名 后期待调整]/*[编辑]使用属性sMartyrKey代替方法GetMartyrKeyBysRelationKey获取[烈士key:sMartyrKey] 2015/03/18 [方]*///sLSSkey = GetMartyrKeyBysRelationKey(skey);//[sMartyrKey 烈士key]_smartyrKey = skey;//这里给私有属性_smartyrKey赋值sLSSkey = SMartyrKey;//这里给私有变量sLSSkey赋值(自定义属性SMartyrKey:依据烈士墓key获取烈士key的值)sb.Append("");sb.Append("" + lsm + "");sb.Append("");sb.Append("
");}}else{/*[思路]:右边,以2的倍数为单位,逐次累加20 20 18 16 与 当前数量比对*/int rewrite = j - 10;int tempEven = (2 * rewrite) + (20 * i) - 1;//右边计算单位:2的倍数+20的倍数if (DynamicCount < (tempEven)){sb.Append("- ");sb.Append("
");}else{sb.Append("- ");skey = list[tempEven].sKey;//[sRelationKey 烈士墓key]lsm = list[tempEven].sJieS;//[暂时:作为烈士名 后期待调整]/*[编辑]使用属性sMartyrKey代替方法GetMartyrKeyBysRelationKey获取[烈士key:sMartyrKey] 2015/03/18 [方]*///sLSSkey = GetMartyrKeyBysRelationKey(skey);//GetMartyrKeyBysRelationKey:返回烈士key [sMartyrKey 烈士key]_smartyrKey = skey;//这里给私有属性_smartyrKey赋值sLSSkey = SMartyrKey;//这里给私有变量sLSSkey赋值(自定义属性SMartyrKey:依据烈士墓key获取烈士key的值)sb.Append("");//烈士链接(链接至:园区英烈--烈士英名录)sb.Append("" + lsm + "");//烈士姓名sb.Append("");sb.Append("
");}}}sb.Append("
");sb.Append("");sb.Append("");/*[编辑]动态生成表格:10行间隔一行( ) 2015/03/12 [方]*/int lineSpacing = (i + 1) % 10;//行分栏:10行添加一空行,去除第一行if (lineSpacing == 0 && i != 1){sb.Append("");}}}else{/*[新增]提示信息:暂无烈士纪念碑信息 2015/03/11 [方] */sb.Append("");sb.Append("暂无零散烈士纪念碑信息...");sb.Append("");/*[新增]提示信息:调整页面高度,拉伸提示信息与底部的距离 2015/03/12 [方]*/sb.Append("");}this.ltrdynamicCreation.Text = sb.ToString();}#endregion/*[编辑]注释:通过烈士墓key(通过烈士和烈士墓关联信息)获取烈士key 2015/03/18 [方]*//// 通过烈士墓key(通过烈士和烈士墓关联信息)获取烈士key/// /// 烈士墓key/// 烈士key //private string GetMartyrKeyBysRelationKey(string sRelationKey)//{// string sLSSkey = "";//[sMartyrKey 烈士key]// if (!string.IsNullOrEmpty(sRelationKey))// {// MartyrsAssociation modelAssoc = new MartyrsAssociation();// modelAssoc.sRelationKey = sRelationKey;//烈士墓key:烈士key(烈士和烈士墓关联获取烈士key)// modelAssoc = iLSLSMBLL.GetModel(modelAssoc);//烈士和烈士墓关联实体// sLSSkey = modelAssoc.sMartyrKey;//[sMartyrKey 烈士key]// }// return sLSSkey;//}/*[新增]非功能性辅助方法:实现数字(0~9)转换成汉字(零~九) 2015/03/12 [方]*//*TODO:非功能性辅助方法:1、实现数字(0~9)转换成汉字(零~九)2、2位数字:0补十3、2位数字及以上:0补零(不变)4、特殊行(十的整数倍行,十一~十九行) 普通行(剩余行)涉及调用方法名称:GetOneNine(string input);*//*[新增]数字转换为汉字(按照现有风格) 2015/03/12 [方]*/#region 非功能性辅助方法,数字转换为汉字(按照现有风格)方法名称:GetRowsName(string input);private string GetRowsName(string input){if (String.IsNullOrEmpty(input)) return ""; // 如果输入为空则返回空string src = input; // 待转换字符串string ret = ""; // 转换返回字符串int rewrite = Convert.ToInt32(src);if (src.Length == 2 && ((rewrite % 10) == 0))//处理10的整数倍的数字{switch (src[0]){case '1':ret += "十行";break;case '2':ret += "二十行";break;case '3':ret += "三十行";break;case '4':ret += "四十行";break;case '5':ret += "五十行";break;case '6':ret += "六十行";break;case '7':ret += "七十行";break;case '8':ret += "八十行";break;case '9':ret += "九十行";break;default:break;}return ret;}for (int i = 0; i < src.Length; i++){if (src.Length == 2 && src[0] == '1' && !src.Equals("10"))//处理11~19的数字{ret += "十" + GetOneNine(src[1].ToString());return ret;}}ret = GetOneNine(src);//处理其它数字return ret;}#endregion/*[新增]处理11~19的数字及其它 2015/03/12 [方]*/#region 处理11~19的数字及其它(通用方法)名称:GetOneNine(string input)private string GetOneNine(string input){if (String.IsNullOrEmpty(input)) return ""; // 如果输入为空则返回空string src = input; // 待转换字符串string ret = ""; // 转换返回字符串for (int i = 0; i < src.Length; i++){char output = src[i];switch (output){case '0':ret += "零";break;case '1':ret += "一";break;case '2':ret += "二";break;case '3':ret += "三";break;case '4':ret += "四";break;case '5':ret += "五";break;case '6':ret += "六";break;case '7':ret += "七";break;case '8':ret += "八";break;case '9':ret += "九";break;default:break;}}return ret + "行";}#endregion}
}
效果图
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
