同一字段根据基础凭证的不同得出不同结果

乖喵咪 2017-12-30 02:29:11
Update TD
SET TD.Z_DDRQ=TM1.PayDate
from PRPay TM
LEFT JOIN PRPayA TD ON TM.DocEntry=TD.DocEntry
LEFT JOIN PRPin TM1 ON TD.BaseDocNum=TM1.DocEntry



如上,PRPay为当前单据,这个单据有两种上级单据,目前只做到了让当前单据PRPay里的Z_DDRQ等于上级单据PRPin里的PayDate,如果当前单据的上级单据是 PUInv,如何引用PUInv中的PayDate?
...全文
182 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小野马1209 2017-12-31
  • 打赏
  • 举报
回复
能不能列出一些实际数据,方便理解
日月路明 2017-12-31
  • 打赏
  • 举报
回复
如果一定要写,可以这样写: Update TD SET TD.Z_DDRQ=IsNull(TM1.PayDate,TM2.PayDate) from PRPay TM LEFT JOIN PRPayA TD ON TM.DocEntry=TD.DocEntry LEFT JOIN PRPin TM1 ON TD.BaseDocNum=TM1.DocEntry LEFT JOIN PUInv TM2 ON TD.BaseDocNum=TM2.DocEntry
日月路明 2017-12-31
  • 打赏
  • 举报
回复
你的模型就有问题,如果上级单据PUInv,PRPin都存在,PayDate就会冲突,这会导致业务的不确定性,这是数据库设计要避免的
DEP大类 DEP方案编码 DEP方案中文名称 业务场景 简要实现方案 参考开发工作量(人/天) 新增及调整字段 EASSCMA1P0001 采购入库单增加项目字段 希望能实现项目采购,需要在采购入库单中加入项目字段,调用辅助资料中的“项目”基础资料; "1、 采购入库单增加“采购项目”字段; 2、 配置“采购项目”取辅助资料“项目” " 0.1 新增及调整字段 EASSCMA1P0005 领料出库单增加对方科目字段 领料出库单生成凭证时,对应的费用类科目明细很多。难以通过BOTP配置取不同的科目,希望在表头增加“对方科目”字段,并支持在BOTP中进行配置。 在领料出库单的表头增加“对方科目”字段,并支持在“领料出库单-凭证”的BOTP中进行配置。 0.5 新增及调整字段 EASSCMA1P0005 销售订单中增加订单时间、发货时间、交货时间并精确到分秒 精细化工行业对销售订单中所涉及到的时间要求非常精确,如要求订单日期、发货日期、交货日期要精确到分钟。现有的销售订单基础上增加三个字段,分别表示订单时间、发货时间、交货时间,以此解决客户需求。 "1. 销售订单分录上面增加订单时间、发货时间、交货时间字段; 2. 增加的日期字段支持时分秒; 3. 界面锚定正确,过滤界面,序时薄界面显示正确。 " 0.5 新增及调整字段 EASSCMA1P0006 EAS供应链_采购入库单处理总本位币金额和总金额并显示到单头上 采购入库单中“总本位币金额” “总金额”两个字段启用,要求金额计算准确 "1. 采购入库单编辑界面将总金额和总本位币金额字段放出来进行数据显示; 2. 采购入库单审核时。同步更新该字段。使其值正确; " 0.5 新增及调整字段 EASSCMA1P0007 领料申请单分录里增加成本对象编码名称 在领料申请单新增界面没有成本对象编码和成本对象名称列。 "1. 领料申请单增加成本对象和成本对象名称两列 2. 增加监听器处理。成本对象选择后,同步更新成本对象名称列 " 0.5 新增及调整字段 EASSCMA1P0008 销售订单中增加“库位”字段 销售订单分录中增加“库位”字段。 1、 销售订单分录增加库位字段 0.5 新增及调整字段 EASSCMA1P0009 付款单单头增加“国家”字段 银企互联,EAS中的付款单提交到银企后,由于付款单没有收款方国家字段,导致提交失败 付款单上增加“国家”字段,F7录入,范围为辅助资料中的"国家",必录 0.2 新增及调整字段 EASSCMA1P0009 付款单单头增加“国家”字段 客户为餐饮企业,每日进行采购,且采购物品85%左右相同,做采购申请单时,往往是复制上日的采购申请单,然后再进行修改,其中很大程度上只是修改日期(包括单头的申请日期、分录的需求日期和交货日期),但现在只能逐行修改分录的需求日期和交货日期,工作量太大,希望修改表头申请日期后,表体的需求日期和交货日期能自动跟着修改 添加脚本,监听单头的申请日期,当该字段的值有改动后,自动将值赋给需求日期和交货日期。 0.5 新增及调整字段 EASSCMA1P0010 领料申请单增加库位 客户有大量批次物料需要在领料申请单上录入,操作时使用系统台账新增分录功能录入。由于申请单上没有库位信息,导致申请单关联生成领料出库单后库位信息不能携带,仓管员不得不手工录入库位信息,给操作上带来极大的不便。 "1、领料申请单加上“库位”字段,非必录,可编辑,F7类型; 2、台账新增分录时,自动从台账携带。 " 0.5 新增及调整字段 EASSCMA1P0014 领料出库单单头增加内部客户 集团总部向外部供应商要货,再供各下属分支机构领用,领用时用领料出库单处理,需要在单据头指定下属机构(内部客户),总部到一定时间汇总领用情况,按已领用数量与下属机构结算。结算时,需要用领料出库单下推销售出库单,销售出库单单头字段“送货客户”取领料出库单上的下属机构(内部客户)。 在领料出库单单头增加字段:“内部客户”,非必录,由用户手工F7选择,F7范围为领料出库单主业务组织所在财务组织的内部客户。 0.5 新增及调整字段 EASSCMA1P0016 采购收货单增加“采购组”字段 采购收货单只有采购组织字段,没有采购组字段,而采购订单及采购入库单都有这两个字段。现采购收货单需要添加该字段。客户这边需要通过这个字段配合工作流,不同采购组由不同人员审批。 "1) 采购收货单编辑界面增加采购组字段; 2) 采购收货单序时簿界面增加采购组字段; 3) 在onload()方法增加KDTEditListener事件,实现采购组织与采购组的联动 " 0.5 新增及调整字段 EASSCMA1P0020 付款申请单携带上游单分录信息 根据合同或应付单下推的付款申请单能否将数量、单价、含税单价带过来,这样客户高层领导审批时就方便了,现在客户领导都不知道这笔钱是买的什么。 "1) 付款申请单编辑界面增加数量、单价、含税单价字段; 2) 付款申请单序时簿界面增加数量、单价、含税单价字段; 3) 采购合同、应付单关联生成付款申请单的BOTP添加数量、单价、含税单价的配置 " 0.5 新增及调整字段 EASSCMA1P0021 物料增加型号字段并携带到相关单据 针对“物料”基础资料,供应链客户提出将其中物料的“规格型号”字段改为“规格”和“型号”两个字段,供应链涉及到物料资源的地方全部要改,以方便其对物料资料的管控和查询。 "1) 物料上面增加型号字段。 2) 物料上的规格型号字段名称修改为规格。 3) 以销售订单为例,将物料的型号字段携带到销售订单上面。 " 0.5 新增及调整字段 EASSCMA1P0024 付款单增加物料字段 在新增和关联应付单生成付款单时,需要在付款单上反映此次付款对应的物料情况,即显示物料信息,目前付款单上没有显示,请问如何能够在付款单上显示所付款对应的物料信息。 "⑴付款单上面增加物料字段; ⑵关联生成付款单的botp携带物料到付款单。 " 0.5 新增及调整字段 EASSCMA1P0025 销售出库单增加到期日期 客户很对委托代销的产品有个委托期限,希望在出库单上增加“到期日期”,同时到期日期支持有权限的修改,审核后也可以修改。 "1. 销售出库单分录上面增加到期日期字段; 2. 到期日期字段支持字段权限; " 0.5 新增及调整字段 EASSCMA1P0026 库存调拨单增加单位标准成本,标准成本 存货核算延续计划价模式,存在库存调拨业务,但库存调拨单上无计划价(单价、金额)显示列,而计划价的审核是调出、调入双方审核的重点内容。因为客户需要采取“直接调拨”模式,自动生成调拨出、入库单,因此库存调拨单上就应有计划价(单价、金额)显示列,以便于审核。 "1) 库存调拨单增加单位标准成本、标准成本字段; 2) 单位标准成本取自物料财务页签,标准成本自动计算得出。 " 0.5 新增及调整字段 EASSCMA1P0047 费用项目增加对方科目字段并携带到应付单 "客户需要按照费用项目对应不同科目,通过DAP自动产生凭证。原计划是通过在费用项目添加记账分类,然后根据记账分类取对应的科目,但是目前系统不支持取费用项目新增的记账分类。 1.通过函数对应科目。根据费用项目,然后通过函数取对应科目编码,做到科目映射。但由于费用项目比较多,而且可能会不时做出更改,所以工作量较大。 2.在做其他应付单的时候,填上对应科目和对方科目,通过dap取数生成凭证。但业务部门工作量增大,而且可能会由于填写错误导致后续凭证有错。 " 在费用项目中二次开发增加一个字段,用于维护对应的科目,建立与科目的映射关系,在新增应付单时,可以根据录入的费用项目,自动默认携带到应付单的对应科目字段上,再根据DAP去生成凭证; 0.8 新增及调整字段 EASSCMA1P0097 EAS供应链_付款申请单可以指定比率 在做付款申请时,每次的付款都是按应付单的某一固定比例来进行支付申请,在应付单(供应商一次性开出发票)下推付款申请单时,每一分录的申请付款金额都需手工计算修改工作量太大,而且容易出错,希望在付款申请单表头增加“本次付款比例”字段,录入后每一分录行上的“申请付款金额”自动按照本次付款比例*(累计付款金额+未付款金额)得出,减少人工计算与录入的工作量与出错率。 采购入库单也可做类似处理。 0.5 新增及调整字段 EASSCMA1P0103 采购收货单分录增加单价金额字段 用户的采购收货单是关键单据,需要通过收货单关联生成和查询到票情况,但收货单上没有单价金额字段,应付单无法从它取价。 因采购收货单分录上本身已有单价、金额两个字段,但界面上不显示,只要把它们显示出来即可。 0.3 新增及调整字段 EASSCMA1P0236 应收单增加携带物料产地字段 客户总部配送中心已处上线阶段。客户的物料确实有产地的需求,没产地栏就无法区分相同名称、规格的物料。所以把物料基础资料中的“助记码”设置成了产地名称 "1. 物料基础页签上增加产地字段。 2. 应收单上增加列“产地”,自动携带显示物料上的“产地”。 3. 增加物料改变事件,自动携带物料的“产地”到表格上。 " 0.5 新增及调整字段 EASSCMA1P0260 比价单到合同放开部分字段可BOTP配置 采购比价单中的一些字段,付款条件、付款方式、采购提前期、送货方式无法带入采购合同中 1. 放开采购合同的相关字段,使其可以参与botp配置; 0.2 单据操作控制修改 EASSCMA1P0011 应收单联查销售成本 销售业务完成后,需要在同一张单据上同时显示每一笔记录的收入和成本,以便对账。 在应收单序时簿上增加两个字段:单位成本、成本,按来源单据分录ID关联对应的销售出库单,获取相应成本字段。 0.5 单据操作控制修改 EASSCMA1P0028 销售退货申请单表头金额字段有计算逻辑 在销售退货申请单表头上添加三个字段“退货金额”“换货金额”“退换货金额差额”;退换货金额差额=退货金额-换货金额。 "1. 在销售退货申请单增加三个字段; 2. 在loadfields()方法增加datachanged事件,实现逻辑计算 " 0.3 单据操作控制修改 EASSCMA1P0028 销售退货申请单增加库位需要和仓库联动 在“销售退货单”中维护分录时,系统默认只能精确到“仓库”而精确不到“仓位”,需要实现两者的联动。 "1. 在销售退货申请单分录增加库位字段; 2. 在onload()方法增加KDTEditListener事件,实现仓库与库位的联动。 " 0.3 单据操作控制修改 EASSCMA1P0032 对比价单中没有报价的物料用颜色标记 客户在做一批物料的询报后,由于个别的物料对其中某个别供应商没有询到价格,携带到比价单上也是没有报价的,但客户针对此批物料客户要按供应商总价来选择,由于存在个别物料没有报价因素的影响不好选择,现客户要求针对这种没有报价的物料利用特别醒目的颜色予以显示,以便让客户及时快速的予以判断。 比价单中对单价为0或者为空的行用红色背景色表示 0.2 单据操作控制修改 EASSCMA1P0048 应收单的付款方式字段修改显示为收款方式 新增应收单时,发现应收单的【收款方式】字段显示为【付款方式】 修改应收单付款方式为收款方式 0.2 单据操作控制修改 EASSCMA1P0053 应付单付款单放开合同号可编辑 客户只用应收应付和总账系统,没有用供应链系统,但需对采购的服务合同按合同进行应付和付款管理,但应付模块的合同号不能录入,希望合同号能够通过参数控制可以在应付模块手工录入。 "1. 放开应付单分录上的采购合同号,采购合同分录号为可编辑; 2. 放开付款单分录上的采购合同号,采购合同分录号为可编辑; " 0.2 单据操作控制修改 EASSCMA1P0055 收款单的流入预算项目值从第一行携带 应付单生成的收款单的流入预算项目不能粘贴,以前都是可以粘贴的,但是现在不行了,一个收款单分录有几千条,如果一个一个去选择要很长时间 1) 在 输入第一行的流入预算项目的时候,后面的行自动携带第一行的值 0.5 单据操作控制修改 EASSCMA1P0062 应收单应付单数量单价精度设置 "应收/应付单录入界面;单据类型选择为非采购/销售发票的其他类型;在录入表体明细选择费用项目后,自动带出来的数量及单价小数位数不能修改; 现在情况是,单据类型为采购OR销售发票的其他应收应付单据,它的数据精度可以根据物料档案中设置的数据精度带出;(客户设置物料精度为四位小数,可看附图);但其他的单据类型选择费用项目后数据精度为六位;现在客户需要设置费用类型的数量单价精度也为4位。 " 1. 设置应收单,应付单费用类型的数量单价字段精度为4位 0.5 单据操作控制修改 EASSCMA1P0069 采购入库增加仓库唯一限制 一张入库单当有多个仓库时,提交时给于提示(即一般只要一个仓库)。 "物料可以设置默认仓库,单据录入的时候携带仓库,如果物料的仓库设置一致,单据上的仓库通常一致。同时,录入第一条仓库,以后行会自动携带第一行仓库,保证整单仓库基本相同。如果不相同,通常情况下是用户进行了仓库的修改。如果提交时候还要增加提示校验仓库相同 以采购入单为例编写DEP案例。 " 0.5 单据操作控制修改 EASSCMA1P0070 仓库仓管员可跨组织选择 目前客户在选择仓管员时只能选择当前组织或平级组织,不能选择上级组织的职员,这样造成管理上的非常不便,因为在很多情况下仓管员并不是一定是当前组织的。建议改回仓管员可以自由选择。 1) 在仓库编辑界面的onLoad()方法中添加后置脚本来重新设置仓管员的F7范围 0.5 单据操作控制修改 EASSCMA1P0073 付款单选择往来户带出业务员 在做付款单时,选择往来户无法带出对应的业务员出来。财务手动添加工作量巨大。希望可以像收款单一样在客户财务资料里面维护后,自动带出来。 "⑴在供应商财务信息上增加“业务员”字段; ⑵在付款单编辑界面实现根据供应商带出业务员的逻辑 " 1 单据操作控制修改 EASSCMA1P0075 采购合同&订单上的交货日期不可编辑 单据转换,采购比价单到采购合同,采购合同到采购订单,客户希望采购合同和采购订单上面的交货日期是单据带过来的,不希望能修改。 "1) 在采购合同编辑界面的onLoad()方法中添加后置脚本来设置交货日期的控制逻辑; 2) 在采购订单编辑界面的onLoad()方法中添加后置脚本来设置交货日期的控制逻辑; " 0.5 单据操作控制修改 EASSCMA1P0075 采购合同&订单上的交货日期不可编辑 单据转换,采购比价单到采购合同,采购合同到采购订单,客户希望采购合同和采购订单上面的交货日期是单据带过来的,不希望能修改。 "1、 在采购合同编辑界面的onLoad()方法中添加后置脚本来设置交货日期的控制逻辑; 2、 在采购订单编辑界面的onLoad()方法中添加后置脚本来设置交货日期的控制逻辑; " 0.5 单据操作控制修改 EASSCMA1P0083 应收应付单据分录上的科目名称显示长编码 应收应付单的单据中,会计科目只显示短名称,这样财务部门在审核时无法判断科目是否正确,应能查看科目全称,方便审核。 通过脚本,将科目的显示格式改为显示长名称。 0.2 单据操作控制修改 EASSCMA1P0087 EAS供应链_采购申请单修改单头日期联动修改分录需求日期和交货日期 客户为餐饮企业,每日进行采购,且采购物品85%左右相同,做采购申请单时,往往是复制上日的采购申请单,然后再进行修改,其中很大程度上只是修改日期(包括单头的申请日期、分录的需求日期和交货日期),但现在只能逐行修改分录的需求日期和交货日期,工作量太大,希望修改表头申请日期后,表体的需求日期和交货日期能自动跟着修改。 添加脚本,监听单头的申请日期,当该字段的值有改动后,自动将值赋给需求日期和交货日期。 0.5 单据操作控制修改 EASSCMA1P0088 EAS供应链_采购订单自动携带第一行分录的交货日期 多行采购订单分录的交货日期相同,批量修改时,需要一行一行修改,工作量很大,希望有对交货日期进行批量填充的功能。 添加脚本,新增或插入分录时,自动取第一行分录的交货日期;添加脚本(监听器),修改第一行分录的交货日期时,自动修改其它分录的交货日期。 1 单据操作控制修改 EASSCMA1P0089 EAS供应链_采购订单的部门默认取采购员的上级部门 销售订单、采购订单等单据,比如采购订单,选择采购员后,部门默认带出的最底层的班组或科室,而统计时需要到上一级部门,因此希望单据上能默认取采购员的上级部门。 通过脚本,实现选择不同的采购员后,自动取采购员主职务所在行政组织的上级组织。 1 单据操作控制修改 EASSCMA1P0090 业务日期显示时分秒 环保行业,出入库业务发生的时间需要明细到时分秒,供政府部门监控使用,但目前系统中的出入库单据的日期类字段只能显示到日期。 新增一个日期字段,可以明细到时分秒 0.2 单据操作控制修改 EASSCMA1P0092 关联生成的其他入库单新增分录允许编辑物料 "副联产品入库,生产订单关联生成其他入库单,订单无法明确副联产品的物料编码,需要在其他入库单中根据实际生产情况新增分录,并输入入库的物料。 目前701版本关联生成的其他入库单可以新增分录、台账新增分录,但是新增分录后物料字段不可编辑。7.5则不可新增分录。 " 通过脚本,放开新增的分录行的物料字段,允许编辑;对于7.5版本,还要放开新增分录、插入分录按钮,以实现关联生成时也可以增加分录。 0.5 单据操作控制修改 EASSCMA1P0094 EAS供应链_关联生成的销售出库单显示付款方式 目前手工录入的销售出库单,可以显示付款方式字段,不显示来源单据类型,但关联生成的销售出库单,会在原付款方式字段的位置上显示来源单据类型,而付款方式字段不可见。 现在产品中将付款方式和来源单据类型放置在同一个位置,默认来源单据不可见,当关联生成销售出库单时,将来源单据类型置为可见,付款方式置为隐藏,因此只要把其中一个字段移到别的位置,使之不重叠,并确保任何时候两个字段均为可见即可。 0.2 单据操作控制修改 EASSCMA1P0095 放开领料出库单分录的“领料日期”字段,允许编辑 领料后再补单,需要记录实际领料日期,在一张单据上录入多次入库,因单头只有一个业务日期,不能满足要求,需要在分录上分别输入各笔物料领用的实际日期 放开分录上的“领料日期”,允许编辑 0.5 单据操作控制修改 EASSCMA1P0096 修改采购订单“价外税”的默认值 客户的采购业务主要是价内税,因此采购订单的“价外税”默认不勾选 通过脚本,将单头的“价外税”字段默认设为不勾选 0.2 单据操作控制修改 EASSCMA1P0100 盘点表放出附件管理菜单 库存盘点时,希望能附上盘点时的一些附件,但没有附件管理菜单可操作 系统默认将附件管理菜单隐藏,放开显示出来即可。 0.2 单据操作控制修改 EASSCMA1P0101 下推生成的采购报价单允许新增删除分录 应商报价时可能会针对数量范围,交货地址不同会有不同的报价,需要在报价单中新增删除分录 ,但目前系统对关联生成的报价单,不能新增删除分录。 在工具栏上增加新增分录和删除分录两个按钮,这个按钮本身是存在的,只是当报价单是由询价单关联生成时,默认隐藏了,至须将其放出来即可。 0.2 单据操作控制修改 EASSCMA1P0102 批量修改销售出库单的销售组和销售员 销售出库单中的销售员和销售组是必填字段,一般情况下,一张出库单都是一个销售员和销售组,希望在录入的时候和库存一样,选择第一行销售员后,下面的分录自动带出,避免每行都要录入。 工具栏上增加一个按钮:批量修改销售组和销售员,并添加相应的处理逻辑 0.5 单据操作控制修改 EASSCMA1P0107 销售订单复制新增清空已禁用的客户信息 在基础资料物料、供应商、客户禁用之后,有此物料、供应商的采购订单或其他单据,点复制新增,同样可以保存提交审核。需要在单据复制新增后校验物料、客商的状态,如果为禁用状态则复制新增后清空物料、客商信息。 以销售订单的客户为例:在复制新增的操作中增加后置脚本校验客户的状态,如果为禁用状态,清空客户信息。 0.5 单据操作控制修改 EASSCMA1P0109 付款单审核后控制不能修改 付款单目前审核后修改按钮亮显,可以修改,且与一般修改权限共用同一权限,控制与其他业务单据控制不一致,客户应用需要控制付款单审核后不允许修改。 "1. 在付款单编辑界面,“加载值(LoadFields)”项中增加后置脚本,处理当单据状态为审核状态时,修改按钮灰显; 2. 在付款单序时簿界面,操作“修改”项中增加前置脚本,控制当单据状态为审核,点击修改按钮运行失败并给出用户提示“已审核的付款单,不允许修改,请重新选择” " 0.5 单据操作控制修改 EASSCMA1P0111 销售订单下推生成采购订单需要控制费用承担部门 销售订单下推生成采购订单,已默认出费用承担部门为上游单据字段,此时修改采购员时系统会自动更新费用承担部门为‘总部服装产品部’。采购订单的费用承担部门不应根据采购员的修改而改变。 "1. 增加字段“是否携带部门”,用于记录是否销售订单下推携带的部门,隐藏。 2. 扩展handleAfterTransform方法,处理销售订单下推来的采购订单“是否默认部门”字段的值。 3. 采购订单界面,扩展loadfields的后置脚本;如果“是否默认携带部门”为是,而且有值则不允许修改 4. 在“部门”字段上扩展dataChange事件;如果是销售订单下推的,而且有值则不允许修改 " 0.5 单据操作控制修改 EASSCMA1P0112 采购申请单申请人F7改为全集团职员范围UI 采购申请单的采购申请人的F7,现在虽然你帮我改对了逻辑,但是客户使用有障碍(今天好多个部门无法继续采购申请流程,很着急)。因为703原来松散的判断让客户的特殊的组织架构反而没有问题,但是现在严格了,客户就无法用了。所以希望把采购申请人的F7改成现在财务模块通用的F7:默认显示当前单据主业务组织所在的管理单元中的行政组织列表,下面还有个选项“显示全部组织”,点这个选项可以显示全集团的行政组织 "1. 扩展onload方法,增加后置脚本,设置F7UI为左树右表形式。 2. 扩展onload方法,增加前置脚本,给“申请人”控件增加事件(willShow, willCommit)控制F7的过滤条件。 " 0.3 单据操作控制修改 EASSCMA1P0113 应付单单据日期按系统当前期间设置默认 应付单拉式生成或者新增时的日期如何设置可以实现以下需求:默认是当前系统日期; 若当前系统日期不在应付系统期间内,则日期默认为应付系统期间的最后一日。(如3月13日做应付单,业务期间在2期,那单据的日期是2月28日,若业务期间在3期,则单据日期为3月13日) "1. 扩展onload方法,处理新增单据时,单据日期的默认值 2. 扩展handleAfterTransform方法,处理Botp生成时,单据日期的默认值 " 0.3 单据操作控制修改 EASSCMA1P0116 采购申请单申请人范围为申请人所在管理单元下的所有人员 "需求描述:行政领料,行政组织记账对应的财务组织,但申请人行政组织所在管理单元与财务组织所在管理单元不是同一管理单元,无法选择的申请人员。 目前范围:供应链单据与当前组织无关,申请人范围为财务组织所在的管理单元下的人员。 处理方式:建议用户DEP处理或者二次开发处理,可以定义申请人范围为申请人所在管理单元下的所有人员,默认值为当前用户。 " "1. 扩展onload方法,增加后置脚本,设置默认 2. 扩展onload方法,增加前置脚本,给“申请人”控件增加事件(willShow, willCommit)控制F7的过滤条件。 " 0.3 单据操作控制修改 EASSCMA1P0118 采购入库单锁定计量单位 "功能点:采购入库单字段控制 应用场景:集团需要按统一的计量单位对下属机构的出入库业务进行汇总,但由于之前物料已经被设为多计量单位,且多计量单位已经被使用,无法修改或删除物料的多个单位,在DEP里把计量单位字段设为锁定 " 扩展onload方法,增加后置脚本,当“单位”单元格被激活时,设置为锁定。 0.3 单据操作控制修改 EASSCMA1P0119 采购收货单不允许手工新增 客户希望采购收货单只能通过采购订单关联生成,不允许业务部门采用手工新增来完成。 1. 扩展界面逻辑校验(beforeStoreFields)方法,增加前置脚本,校验是否关联生成 0.3 单据操作控制修改 EASSCMA1P0120 销售订单下推生成的销售出库单付款方式不能显示 订单关联生成的销售出库单,一般情况下订单决定了付款方式,标准产品由于界面布局的原因,由订单携带过来的付款方式在后台隐藏显示,没有放置在界面上。 1. 扩展loadfields方法,增加后置脚本,显示付款方式 0.2 单据操作控制修改 EASSCMA1P0121 领料出库单设置默认事务类型 EAS7.0.3版本事物类型默认为领料出库,升级到7.5后,每做一张单都要选择,客户反映增加了很多工作量,对升级效果的整体产生影响,请设置一个默认值“020”,如有不同,容许客户修改。 1. 扩展onload方法,增加后置脚本,如果是新增时,且事务类型为空,设置为‘020’领料库存。 0.2 单据操作控制修改 EASSCMA1P0137 生产入库单成本中心只可过滤出生产类成本中心 生产入库单与领料出库单的成本中心都是非生产类型,在成本管理中,投入产量录入界面可以显示生产入库单,但在材料费用分配-领料出库费用分配界面不能显示领料出库单,无法进行成本费用归集。希望对生产入库单进行控制,只能使用生产类的成本中心 1. 控制生产入库单只能使用生产类型(直接生产部门、辅助生产部门)的成本中心; 0.5 单据操作控制修改 EASSCMA1P0141 付款申请单携带上游单分录信息 根据合同或应付单下推的付款申请单能否将数量、单价、含税单价带过来,这样客户高层领导审批时就方便了,现在客户领导都不知道这笔钱是买的什么。 "1、 付款申请单编辑界面增加数量、单价、含税单价字段; 2、 付款申请单序时簿界面增加数量、单价、含税单价字段; 3、采购合同、应付单关联生成付款申请单的BOTP添加数量、单价、含税单价的配置 " 0.5 单据操作控制修改 EASSCMA1P0155 单据编辑界面增加合计行及合计字段 采购收货单编辑界面金额字段没有合计,序时簿中数量、金额在合计行没有合计 设置编辑界面及序时簿界面数量、金额字段的参与合计行 0.1 单据操作控制修改 EASSCMA1P0160 采购询价计划单数量从,数量到填写之后带入采购报价单 在采购询价计划单中,通过DEP设置可以在字段“数量从”、“数量到”中填写数量,但是无法带入采购报价单中,仁和目前的采购询价业务为:比如采购产品A的数量1000个,有三家供应商分别为D/E/F,那么对这三家供应商询价的数量会出现差异,D的询价范围会是:0---200,E的询价范围是:500--800,F的询价范围是:800-1000。即在询价时由采购部向供应商提供具体的数量范围 "1. 询价计划单的数量从,数量到字段可修改 2. 数量从,数量到字段可携带到报价单 " 0.5 单据操作控制修改 EASSCMA1P0161 采购合同到期后不能再进行付款 操作采购合同付款时发现一个问题,采购合同到期失效后仍然可以进行做付款单付款,依据完美公司采购合同付款原则:合同到期失效后不再进行付款,现需要金蝶EAS系统在采购合同到期失效后自动终止做付款单付款。 在合同生成付款单时增加到期日期的校验 0.5 单据操作控制修改 EASSCMA1P0169 采购申请单校验申请数量大于0 "1、采购计划员上报采购申请的时候可以只填审批数量,申请数量可以为空,客户要求软件必须是申请数量不能为空或0; 2、申请数量为空,审批数量不大于0,提交审核以后申请数量为0; 3、客户需求申请数量不能为空,审批数量可以为0。 " "1. 提交时校验申请数量必须大于0; 2. 提交的检查审批数量,如果为空或者为0,设置审批数量等于申请数量。 " 0.5 单据操作控制修改 EASSCMA1P0174 采购订单受合同有效期控制 采购合同关联采购订单时,将采购订单的业务日期填写在合同有效期外,但依然能够提交,合同有效期并没有控制不允许单据生成。 1) 在采购订单后台_submit()前添加脚本; 0.5 单据操作控制修改 EASSCMA1P0194 销售出库单审核状态才能打印 由于用户多次将提交或保存状态下的销售出库单打印出来,并根据此发了货,而出库单没有审核,造成了极大风险。所以希望销售出库单只有在审核状态下才能打印。 控制打印时非审核状态给提示 0.5 单据操作控制修改 EASSCMA1P0262 销售订单不打印数量为0的分录,变更时可删除分录 "销售订单做变更后,分录不能删除,只能改为0;但是在打印的时候数量为0的数据仍显示出来。现客户的需求是: 1、销售订单变更后,能否删除分录。 2、不能删除分录后,分录数量为0的不打印。 " "1. 销售订单变更后,可以删除分录。 2. 分录数量为0的不打印。 " 0.5 单据操作控制修改 EASSCMA1P0302 采购订单新增时不允许修改价格但是变更时可以修改价格 强制使用供货价格时,新增和变更都能修改价格。或者重置参数设置,新增和变更都不能修改价格,不能满足客户需求.客户需要新增采购订单不能修改价格,只有变更时才能修改价格。 "设置价格控制策略采购订单的修改控制为禁止修改 通过dep设置变更时价格字段可以修改。 2.前置补丁:PT079158 " 0.3 单据操作控制修改 EASSCMA1P0331 库位F7增加维护功能按钮 采购入库单分录中F7选择库位后,希望在库位显示界面增加维护按钮,可以在采购单界面直接进行库位的维护和物料存放分配设置,方便客户操作 "1. 目前DEP不支持在F7LocationUI上增加按钮 2. 扩展onload方法,采用代码方式增加“维护”按钮 3. 按钮增加点击事件,打开库位维护界面 " 0.5 单据操作控制修改 EASSCMA1P0338 采购入库单自动根据数量计算采购费用 采购订单多次推采购入库单,采购费用从采购订单携带,修改数量后,不能按数量比例重新计算采购费用。 在采购入库单分录上增加一个字段:单位采购费用,支持botp配置从上游单据携带;在修改入库单的数量或单位采购费用后,自动按数量*单位采购费用计算出采购费用。 0.5 单据操作控制修改 EASSCMA1P0340 库存盘点可选择是否调整辅助数量 库存盘点时,数量没有差异,但辅助数量有差异,目前产品也会生成盘点调整单,但实际应用中,有可能用户不希望调整辅助数量。 在盘点表上增加字段,允许用户自由选择是否要调整辅助数量。 0.5 序时簿显示调整 EASSCMA1P0132 采购订单序时簿增加部门字段 采购订单单据头已录入了部门信息,但在序时簿无法显示出部门信息。导致数据过滤查询时无法按部门查询及统计 "1. 采购订单业务数据源导入部门 2. 采购订单序时簿增加部门字段 " 0.2 序时簿显示调整 EASSCMA1P0138 采购订单序时簿可以过滤查看费用分录的信息 用户在做采购业务环节的费用分析和查询工作,希望在采购订单序时簿查询界面,能将费用明细页签中的字段作为自定义查询条件,查询到符合条件的采购订单分录,从而对费用情况进行统计分析 "1. 采购订单查询增加费用分录相关字段; 2. 采购订单序时簿增加费用分录相关字段; " 0.5 序时簿显示调整 EASSCMA1P0141 付款申请单序时簿显示“申请人” 目前付款申请单序事簿中没有“申请人”字段,希望能够增加方便查看申请人 1) 付款申请单序时簿增加申请人字段 0.2 序时簿显示调整 EASSCMA1P0143 委外订单序时簿显示“ 未收货数量” 目前委外订单序事簿中没有“未收货数据”字段,无法查询出未关联完成的订单 1、 委外订单序时簿增加“未收货数据”字段,并放开相应的过滤条件、表格设置、排序功能; 0.3 序时簿显示调整 EASSCMA1P0144 EAS供应链_销售出库单序时簿显示辅助单位和辅助数量 物料启用辅助计量单位,但在销售出库单序时簿,辅助单位和辅助数量不可显示。 在DEP中,将序时簿的Query的辅助单位和辅助数量放出来,序时簿添加两列,用以显示这两个字段。 0.3 序时簿显示调整 EASSCMA1P0150 EAS供应链_付款申请单序时簿显示每张单据的总金额 查询付款申请单序时簿时,希望能看到每张申请单的明细,并在两列中分别显示每张单据的总申请金额、总批准金额,目前没有这两列。 付款申请单单头有两个字段:申请金额、审批金额,就是单据各分录的申请金额和审批金额的合计,而且在付款申请单序时簿的Query中也包含了这两个字段,序时簿界面没有放出来,因此只要在DEP中为序时簿添加两个列,把这两个字段显示出来即可。 0.2 序时簿显示调整 EASSCMA1P0158 采购入库单序时簿支持按照供应商进行快速查询 采购入库单序时簿快速查询栏,增加按照供应商过滤查询的“查询条件” 1. 设置业务数据源上的字段扩展属性,放开供应商字段的快速查询 0.2 综合 EASSCMA1P0002 物料增加核算项目携带到DAP中 账务系统需要核算到物料大类,目前物料基本分类分为多个分类,财务科目核算分类采用的是自定义核算项目, 分类方式及编码与物料基本完全相同,在DAP中如何根据物料取到对应在自定义核算项目中的分类编码,并在 DAP中对自定义核算项目进行赋值。 举例说明: 物料基本分类: 01 进口钛白粉 01.01 石原 01.02 杜邦 02 国产钛白粉 自定义核算项目(物料大类)分类与上面完全相同; "1. 新增自定义核算项目“物料类别”(实际做此案例时,建议用bim来开发基础资料,目前dep开发的基础资料在作为核算项目时,还有个缺陷); 2. 引入核算项目的横表,建立核算项目与新增“物料类别”基础资料的关系; 3. 物料主档基础资料页签增加“物料类别”; 4. 库存单据中增加物料类别,携带物料基础资料相应的“物料类别”; " 1 工作流 EASSCMA1P0301 采购订单工作流审批根据“是否存在附件”选择不同下级节点 如何在采购订单使用工作流审批根据“是否存在附件”选择下级节点,因为采购订单数据表中没有附件数字段。 在工作流中增加脚本判断当前单据的附件数量,根据不同的附件数量,走不同的下级节点。 0.3 二次开发案例 EASSCMA1P1100 采购订单工作流审批根据“是否存在附件”选择不同下级节点 在选择物料的之前不希望选择申请组织,希望可以直接选择物料,然后反填申请组织 "这个需求没办法通过DEP来实现,所以需要通过二次开发的代码来实现 1.去掉选物料之前对申请组织为空的校验。 2.选择物料之后处理申请组织的值 3.依赖补丁:PT079158. " 1.5 二次开发案例 EASSCMA1P1000 采购订单选择物料自带供应商 客户在 选物料之前不知道供应商是谁,现在的采购订单是先选择供应商,然后才允许选择物料。客户希望可以直接选择物料,然后根据物料携带出供应商。并且在物料f7里面可以看到供应商 "在采购订单上面增加一个菜单按钮,选择物料,弹出物料f7界面以供选择 2.新增一个业务数据源:物料供应商查询,关联物料和供应商 3.采购订单上面处理物料选择后校验供应商唯一,携带供应商到界面等。 " 2
网上服装销售管理系统设计 1引言 服装行业中小型批发、零售企业以及连锁店往往存在一些共同的特点和问题,如服装 分类不明确、库存信息混乱、信息上报更新不及时、决策欠依据、经营不规范等,而这 些问题往往是一个企业成功管理的关键。因此,在总结了一些对服装销售行业的理解、 借鉴了一些优秀的管理经验的基础上,设计了服装进销存管理系统。 服装连锁企业的特点是各经营网点分布在同一个城市的不同区域或不同的城市,为了 充分利用原有的信息和资源的基础上处理好许多中间环节,减少员工的工作量;保证企 业进销存的循环链状良好;提高管理效率的目的,结合现代网络技术、计算机技术和多 媒体技术的服装企业进销存管理系统是目前的主流设计思想,而一个这样的系统基本都 具有以下特征: 以极简单的进、销、存流程囊括所有服装进销存业务活动,以业务点的形式囊括所有仓 库-商店甚至车间。 用尽可能少数的界面,以极灵活的多条件组合来提供无穷无尽的角度分析数据。 打印全面灵活:所有单据的打印格式,根据操作表格的列宽调整配合打印设置选项,即 可适应所有规格的纸张。 条码辅助管理:最大程度地帮助减少人为窜号误差。 自定义的横排尺码表:完全自定义多尺寸系列,符合服装业数据特点。 无数种查询报表均能立即打印,当然也可导入到电子表格中。 数据维护简单安全:备份、恢复、整理均一步操作、快速简便。 本系统是适合中小型服装批发、零售企业使用的小型管理系统。它除了拥有一般进销 存系统的基本信息管理、进货管理、销售管理等功能以外,同时还具有以下特点: 1. 系统小巧,安装方便,占用内存小。 2. 典型Windows界面,无需培训,任何人均能很快上手。 3. 查询方便,统计精确,实现实时打印。 2 需求分析 2.1 输入数据分析 该系统的输入数据可以分为两种类型,一种是用户建立业务所需的基本资料信息。例 如用户资料、商品属性资料、供应商基本资料、客户基本资料等。这一备份主要由具有 管理员权限的用户进行输入。另一种类型是进货、销售、入库和出库的单据的输入。该 部分录入的数据是系统的主要操作对象。这些数据记录一个企业所有业务过程。无论是 多小规模的企业,这部分数据必定非常多。 2.1 输出入数据分析 该为该系统的输出信息,按功能大致可以分为三种:查询结果、打印报表以及统计结 果。 查询结果是将进货表、销售表和库存表里头的所有信息都显示在网络控件上。报表设 计中只是安排了一些必要的字段,这样不仅能使报表所传达的信息更加明确,而且让报 表看起来更加美观。数据统计是对每一款商品的数量、总价等信息进行汇总,让用户可 以在当日、当月和该年对数据进行统计。 2.3 系统的数据流图 如图2.1所示的是该系统的数据流图。 图2.1 数据流图 该系统是以商品流为基础,单据流为主线实现数据传递的。除用户登录信息和基本信 息输入以外,其他所有的业务都是以单据为凭证。其业务过程中产生的单据有进货单据 、销售单据、提货单据三种。它们每天由经办的业务员输入到数据库中去,从而堆叠成 各表单的记录。然后这些记录可供任何权限的业务员进行查询、统计、打印等操作。入 库单据是在每天营业完毕后由清点商品的业务员统计各个单据的数据,按照如下公式( 1): 入库量=进货量+出库量-销售量 (1) (当日的同一同一颜色的商品,若某一项当日没有单据,就计为0) 填写入库单据。该入库单信息将存储到库存表(kucun)里。 3 概要设计 3.1 系统设计原则 该系统应能集中处理服装的进、销、存业务和基本资料管理,分析得出本系统具有以 下功能: 1. 方便的数据查询功能,支持多条件查询。 2. 数据备份和恢复功能,应付由于操作不当导致系统数据库破坏的情况。 3. 方便实用的计算器和记事本,便于用户处理数据和记录日常业务。 4. 限制权限,设置修改,删除数据的权利范围;数据操作方便简单,稳定性强。 5. 出货统计和库存查询功能,保证数据可靠性和准确性。 6. 强大的报表打印功能。 3.2 系统功能模块图 经过分析,得到系统的功能模块图如图3.1所示。 3.3 系统功能模块图的分析 服装进销存管理系统包括系统维护、基本信息录入、进货信息管理、销售信息管理、 库存信息管理、报表打印、辅助工具和帮助文件等把八个基本功能模块。以下是对各个 模块的功能分析: 1. 系统维护 系统维护在整个软件中起到"护航"的作用,它维护系统的正常运行,管理用户的使用权 限,保护信息的安全性。所以在系统维护模块中,应该至少拥有用户登录管理、用户权 限管理、数据库备份和数据库恢复等功能。 2. 基本信息录入 该模块设置为数据库的各个基本信息表单进行录入。该部分主要是由管理员操作的。它 包括商品资料的录入、客户资料的录入、业务员资料录入、供应商资料的录入。 3. 进货信息管理 进货信息管
手动优化了PDF的书签,书签可折叠,书签链接以目录方式保存,多达1000多页,每页都做了书签定位,手都累酸啦。 ============================== 因权限只能到60MB,分卷压缩了,共3个压缩包,需下载完3个一起解压, ============================== ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的建议。书中还深入讲述了其他ASP.NET图书遗漏的高级主题,如自定义控件的创建、图像处理、加密等。此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软的ASP.NETAJAX平台。另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。   《ASP.NET 4高级程序设计(第4版)》适合各层次的ASP.NET程序员阅读。 =================== 第一部分 核心概念 第1章 ASP.NET简介 1.1 ASP.NET的7大要点 1.1.1 要点1:ASP.NET是同.NETFramework集成在一起的 1.1.2 要点2:ASP.NET是编译执行的,而不是解释执行的 1.1.3 要点3:ASP.NET支持多语言 1.1.4 要点4:ASP.NET运行在公共语言运行库内 1.1.5 要点5:ASP.NET是面向对象的 1.1.6 要点6:ASP.NET支持所有的浏览器 1.1.7 要点7:ASP.NET易于部署和配置 1.2 ASP.NET的演变 1.2.1 ASP.NET1.0和ASP.NET1.1 1.2.2  ASP.NET2.0 1.2.3 ASP.NET3.5 1.2.4 ASP.NET4 1.2.5 Silverlight 1.3 总结 第2章 Visual Studio 2.1 Visual Studio 2.1.1 网站和Web项目 2.1.2 创建无项目文件的网站 2.1.3 设计网页 2.2 Visual StudioIDE 2.2.1 解决方案资源管理器 2.2.2 文档窗口 2.2.3 工具箱 2.2.4 错误列表和任务列表 2.2.5 服务器资源管理器 2.3 代码编辑器 2.3.1 添加程序集引用 2.3.2 智能感知和大纲显示 2.3.3 Visual Studio 2010改进 2.4 编码模型 2.4.1 代码隐藏文件如何与页面连接 2.4.2 控件标签如何与页面变量连接 2.4.3 事件如何与事件处理程序连接 2.5 Web项目 2.5.1 基于项目的开发 2.5.2 创建Web项目 2.5.3 迁移旧版Visual Studio创建的网站 2.6 Visual Studio调试 2.6.1 单步调试 2.6.2 变量监视 2.6.3 高级断点 2.7 WebDevelopment Helper 2.8 总结 第3章 Web窗体 3.1 页面处理 3.1.1 HTML表单 3.1.2 动态用户界面 3.1.3 ASP.NET事件模型 3.1.4 自动回送 3.1.5 视图状态 3.1.6 XHTML兼容性 3.1.7 客户端控件ID 3.2 Web窗体处理阶段 3.2.1 页面框架初始化 3.2.2 用户代码初始化 3.2.3 验证 3.2.4 事件处理 3.2.5 自动数据绑定 3.2.6 清除 3.2.7 页面流示例 3.3 作为控件容器的页面 3.3.1 显示控件树 3.3.2 页头 3.3.3 动态控件的创建 3.4 Page类 3.4.1 Session、Application和Cache 3.4.2 Request 3.4.3 Response 3.4.4 Server 3.4.5 User 3.4.6 Trace 3.4.7 访问其他类中的HTTP上下文 3.5 总结 第4章 服务器控件 4.1 服务器控件的类型 4.2 HTML服务器控件 4.2.1 HtmlControl类 4.2.2 HtmlContainerControl类 4.2.3 HtmlInputControl类 4.2.4 HTML服务器控件类 4.2.5 设置Style特性和其他属性 4.2.6 通过编程创建服务器控件 4.2.7 处理服务器端事件 4.3 Web控件 4.3.1 WebControl基类 4.3.2 基本的Web控件类 4.3.3 单位 4.3.4 枚举 4.3.5 颜色 4.3.6 字体 4.3.7 焦点 4.3.8 默认按钮 4.3.9 可滚动面板 4.3.10 处理Web控件事件 4.4 List控件 4.4.1 Selectable列表控件 4.4.2 BulletedList控件 4.5 输入验证控件 4.5.1 验证控件 4.5.2 验证流程 4.5.3 BaseValidator类 4.5.4 RequiredFieldValidator控件 4.5.5 RangeValidator控件 4.5.6 CompareValidator控件 4.5.7 RegularExpressionValidator控件 4.5.8 CustomValidator控件 4.5.9 ValidationSummary控件 4.5.10 通过编程使用验证器 4.5.11 验证组 4.6 富控件 4.6.1 AdRotator控件 4.6.2 Calendar控件 4.7 总结 第5章 ASP.NET应用程序 5.1 剖析ASP.NET应用程序 5.1.1 应用程序域 5.1.2 应用程序生命周期 5.1.3 应用程序更新 5.1.4 应用程序目录结构 5.2 global.asax应用程序文件 5.2.1 应用程序事件 5.2.2 演示应用程序事件 5.3 ASP.NET配置 5.3.1 machine.config文件 5.3.2 web.config文件 5.3.3 设置 5.3.4 5.3.5 5.3.6 5.3.7 通过编程读写配置节 5.3.8 网站管理工具(WAT) 5.3.9 扩展配置文件结构 5.3.10 加密配置节 5.4 .NET组件 5.4.1 创建组件 5.4.2 通过App_Code目录使用组件 5.4.3 通过Bin目录使用组件 5.5 扩展HTTP管道 5.5.1 HTTP处理程序 5.5.2 创建自定义的HTTP处理程序 5.5.3 配置自定义的HTTP处理程序 5.5.4 使用无须配置的HTTP处理程序 5.5.5 创建高级的HTTP处理程序 5.5.6 为非HTML内容创建HTTP处理程序 5.5.7 HTTP模块 5.5.8 创建自定义HTTP模块 5.6 总结 第6章 状态管理 6.1 ASP.NET状态管理 6.2 视图状态 6.2.1 视图状态示例 6.2.2 在视图状态中保存对象 6.2.3 视图状态评估 6.2.4 有选择地禁用视图状态 6.2.5 视图状态安全 6.3 在页面间传送信息 6.3.1 查询字符串 6.3.2 跨页回发 6.4 cookie 6.5 会话状态 6.5.1 会话架构 6.5.2 使用会话状态 6.5.3 配置会话状态 6.5.4 会话状态安全 6.6 应用程序状态 6.7 总结 第二部分 数据访问 第7章 基础 7.1 ADO.NET架构 7.1.1 ADO.NET数据提供程序 7.1.2 ADO.NET的标准化 7.1.3 基本ADO.NET类 7.2 Connection类 7.2.1 连接字符串 7.2.2 测试连接 7.2.3 连接池 7.3 Command类和DataReader类 7.3.1 Command基础 7.3.2 DataReader类 7.3.3  ExecuteReader()方法和DataReader 7.3.4 ExecuteScalar()方法 7.3.5 ExecuteNonQuery()方法 7.3.6 SQL注入攻击 7.3.7 使用参数化命令 7.3.8 调用存储过程 7.4 事务 7.4.1 事务和ASP.NET应用程序 7.4.2 隔离级别 7.4.3 保存点 7.5 提供程序无关的代码 7.5.1 创建工厂 7.5.2 用工厂创建对象 7.5.3 使用提供程序无关的代码的查询 7.6 总结 第8章 数据组件和DataSet 8.1 构建数据访问组件 8.1.1 数据包 8.1.2 存储过程 8.1.3 数据应用类 8.1.4 测试数据库组件 8.2 非连接的数据 8.2.1 Web应用程序和DataSet 8.2.2 XML集成 8.3 DataSet类 8.4  DataAdapter类 8.4.1 填充DataSet 8.4.2 使用多个表和关系 8.4.3 查找特定行 8.4.4 在数据访问类里使用DataSet 8.4.5 数据绑定 8.5 DataView类 8.5.1 使用DataView排序 8.5.2 使用DataView过滤 8.5.3 使用关系的高级过滤 8.5.4 计算列 8.6 总结 第9章 数据绑定 9.1 基本的数据绑定 9.1.1 单值绑定 9.1.2 其他类型的表达式 9.1.3 重复值绑定 9.2 数据源控件 9.3 SqlDataSource 9.3.1 选择记录 9.3.2 参数化命令 9.3.3 错误处理 9.3.4 更新记录 9.3.5 删除记录 9.3.6 插入记录 9.3.7 SqlDataSource的不足 9.4 ObjectDataSource 9.4.1 选择记录 9.4.2 更新记录 9.4.3 使用数据对象执行更新 9.5 数据源控件的限制 9.5.1 问题 9.5.2 添加其他项 9.5.3 使用SqlDataSource处理其他选项 9.5.4 使用ObjectDataSource处理其他选项 9.6 总结 第10章 富数据控件 10.1 GridView 10.2 格式化GridView 10.2.1 格式化字段 10.2.2 样式 10.2.3 格式化特定值 10.3 GridView行选择 10.3.1 使用选择来创建主-从表单 10.3.2 SelectedIndexChanged事件 10.3.3 将数据字段用作选择按钮 10.4 对GridView排序 10.4.1 使用SqlDataSource排序 10.4.2 使用ObjectDataSource排序 10.4.3 排序和选择 10.4.4 高级排序 10.5 GridView分页 10.5.1 自动分页 10.5.2 分页和选择 10.5.3 ObjectDataSource的自定义分页 10.5.4 定制分页栏 10.6 GridView模板 10.6.1 使用多个模板 10.6.2 在Visual Studio中编辑模板 10.6.3 绑定到方法 10.6.4 处理模板中的事件 10.6.5 使用模板编辑 10.6.6 模板中的客户端ID 10.7 ListView 10.7.1 分组 10.7.2 分页 10.8 DetailsView和FormView 10.8.1 DetailsView 10.8.2 FormView 10.9 高级网格 10.9.1 GridView中的汇总 10.9.2 单个表中的父/子视图 10.9.3 使用查找表编辑字段 10.9.4 处理来自数据库的图片 10.9.5 探测并发冲突 10.10 总结 第11章 缓存和异步页面 11.1 理解ASP.NET缓存 11.2 输出缓存 11.2.1 声明性的输出缓存 11.2.2 缓存和查询字符串 11.2.3 使用特定查询字符串参数的缓存 11.2.4 自定义缓存控制 11.2.5 使用HttpCachePolicy类进行缓存 11.2.6 缓存后替换和部分页缓存 11.2.7 缓存用户配置 11.2.8 缓存配置 11.2.9 输出缓存扩展 11.3 数据缓存 11.3.1 向缓存添加项目 11.3.2 简单的缓存测试 11.3.3 缓存优先级 11.3.4 使用数据源控件的缓存 11.4 缓存依赖 11.4.1 文件和缓存项目依赖 11.4.2 聚合依赖 11.4.3 移除项目回调 11.4.4 理解SQL缓存通知 11.4.5 缓存通知的工作方式 11.4.6 启用通知 11.4.7 创建缓存依赖 11.5 自定义缓存依赖 11.5.1 基本的自定义缓存依赖 11.5.2 使用消息队列的自定义缓存依赖 11.6 异步页面 11.6.1 创建异步页面 11.6.2 在异步页面中查询数据 11.6.3 错误处理 11.6.4 在异步任务中使用缓存 11.6.5 多异步任务和超时 11.7 总结 第12章 文件和流 12.1 使用文件系统 12.1.1 Directory类和File类 12.1.2 DirectoryInfo类和FileInfo类 12.1.3 DriveInfo类 12.1.4 使用Attributes 12.1.5 使用通配符过滤文件 12.1.6 获取文件的版本信息 12.1.7 Path类 12.1.8 文件浏览器 12.2 使用流读写文件 12.2.1 文本文件 12.2.2 二进制文件 12.2.3 上传文件 12.2.4 使文件对多用户安全 12.2.5 压缩 12.3 序列化 12.4 总结 第13章 LINQ 13.1 LINQ基础 13.1.1 延迟执行 13.1.2 LINQ是如何工作的 13.1.3 LINQ表达式 13.1.4 揭秘LINQ表达式 13.2 LINQ to DataSet 13.2.1 强类型的DataSet 13.2.2 空值 13.3 LINQ to Entities 13.3.1 生成数据模型 13.3.2 数据模型类 13.3.3 实体关系 13.3.4 查询存储过程 13.3.5 LINQ to Entities查询揭秘 13.4 数据库操作 13.4.1 插入 13.4.2 更新 13.4.3 删除 13.4.4 管理并发 13.4.5 处理并发冲突 13.5 EntityDataSource控件 13.5.1 显示数据 13.5.2 获取关联数据 13.5.3 编辑数据 13.5.4 验证 13.6 使用QueryExtender控件 13.6.1 使用SearchExperssion 13.6.2 使用RangeExpression 13.6.3 使用PropertyExpression 13.6.4 使用MethodExpression 13.7 总结 第14章 XML 14.1 什么时候使用XML 14.2 XML简介 14.2.1 XML的优点 14.2.2 格式良好的XML 14.2.3 XML命名空间 14.2.4 XML架构 14.3 基于流的XML处理 14.3.1 写XML文件 14.3.2 读取XML文件 14.4 内存中的XML处理 14.4.1 XmlDocument 14.4.2 XPathNavigator 14.4.3 XDocument 14.5 搜索XML内容 14.5.1 搜索XmlDocument 14.5.2 使用XPath搜索XmlDocument 14.5.3 使用LINQ搜索XDocument 14.6 验证XML内容 14.6.1 基本架构 14.6.2 验证XmlDocument 14.6.3 使用XDocument进行验证 14.7 转换XML内容 14.7.1 基本的样式表 14.7.2 使用XslCompiledTransform 14.7.3 使用Xml控件 14.7.4 使用LINQ to XML转换XML 14.8 XML数据绑定 14.8.1 非层次化绑定 14.8.2 使用XPath 14.8.3 嵌套的网格 14.8.4 使用TreeView的层次化绑定 14.8.5 使用XSLT 14.8.6 绑定到来自其他源的XML内容 14.8.7 通过XmlDataSource更新XML 14.9 XML和ADO.NET数据集 14.9.1 把DataSet转换为XML 14.9.2 把DataSet作为XML访问 14.10 总结 第三部分 构建ASP.NET网站 第15章 用户控件 15.1 用户控件基础 15.1.1 创建简单的用户控件 15.1.2 把页面转换成用户控件 15.2 为用户控件添加代码 15.2.1 处理事件 15.2.2 添加属性 15.2.3 使用自定义对象 15.2.4 添加事件 15.2.5 公开内部Web控件 15.3 动态加载用户控件 15.4 局部页面缓存 15.4.1 VaryByControl 15.4.2 共享缓存控件 15.5 总结 第16章 主题和母版页 16.1 层叠样式表 16.1.1 创建样式表 16.1.2 应用样式表规则 16.2 主题 16.2.1 主题文件夹和外观 16.2.2 应用简单主题 16.2.3 处理主题冲突 16.2.4 为同一控件创建多个外观 16.2.5 含有模板和图片的外观 16.2.6 在主题里使用CSS 16.2.7 通过配置文件来应用主题 16.2.8 动态应用主题 16.3 标准化网站布局 16.4 母版页基础 16.4.1 简单的母版页 16.4.2 简单的内容页 16.4.3 默认内容 16.4.4 具有表格和CSS布局的母版页 16.4.5 母版页和相对路径 16.4.6 通过配置文件应用母版页 16.5 高级母版页 16.5.1 和母版页类交互 16.5.2 动态设置母版页 16.5.3 嵌套母版页 16.6 总结 第17章 网站导航 17.1 多视图页面 17.1.1 MultiView控件 17.1.2 Wizard控件 17.2 站点地图 17.2.1 定义站点地图 17.2.2 绑定站点地图 17.2.3 导航路径 17.2.4 显示站点地图的一部分 17.2.5 站点地图对象 17.2.6 加入自定义站点地图信息 17.2.7 创建自定义的SiteMapProvider 17.2.8 安全调整 17.3 URL映射和路由 17.3.1 URL映射 17.3.2 URL路由 17.4 TreeView控件 17.4.1 TreeNode 17.4.2 按需填充节点 17.4.3 TreeView样式 17.5 Menu控件 17.5.1 Menu样式 17.5.2 Menu模板 17.6 总结 第18章 网站部署 18.1 安装和配置IIS 18.1.1 安装IIS 7 18.1.2 管理IIS 7 18.2 部署网站 18.2.1 通过复制文件进行部署 18.2.2 使用Web部署 18.2.3 通过FTP部署 18.3 管理网站 18.3.1 创建新站点 18.3.2 创建虚拟目录 18.3.3 使用VirtualPathProvider 18.3.4 使用应用程序池 18.3.5 使用应用程序预热 18.4 扩展集成管道 18.4.1 创建处理程序 18.4.2 部署处理程序 18.4.3 配置处理程序 18.4.4 测试处理程序 18.5 总结 第四部分 安全 第19章 ASP.NET安全模型 19.1 为何创建安全软件 19.1.1 理解潜在的威胁 19.1.2 安全编程原则 19.1.3 理解Gatekeeper 19.2 理解安全级别 19.2.1 验证 19.2.2 授权 19.2.3 机密性和完整性 19.2.4 互相协作 19.3 理解SSL 19.3.1 理解证书 19.3.2 理解SSL 19.3.3 在IIS 7.x中配置SSL 19.4 总结 第20章 表单验证 20.1 表单验证介绍 20.1.1 为什么使用表单验证 20.1.2 为什么不使用表单验证 20.1.3 为什么不自己实现cookie验证 20.1.4 表单验证类 20.2 实现表单验证 20.2.1 配置表单验证 20.2.2 禁止匿名用户访问 20.2.3 创建自定义登录页面 20.2.4 自定义凭证存储 20.2.5 表单验证中的持久化cookie 20.3 IIS 7.x和表单验证 20.4 总结 第21章 成员资格 21.1 介绍ASP.NET的成员资格API 21.2 使用成员资格API 21.2.1 配置表单验证 21.2.2 创建数据存储 21.2.3 配置连接字符串和成员资格提供程序 21.2.4 创建并验证用户 21.3 使用安全控件 21.3.1 Login控件 21.3.2 LoginStatus控件 21.3.3 LoginView控件 21.3.4 PasswordRecovery控件 21.3.5 ChangePassword控件 21.3.6 CreateUserWizard控件 21.4 在IIS 7.x里配置成员资格 21.4.1 配置提供程序和用户 21.4.2 在其他应用程序里使用成员资格API 21.5 使用Membership类 21.5.1 从存储中获得用户 21.5.2 更新存储中的用户 21.5.3 创建和删除用户 21.5.4 检验用户 21.6 总结 第22章 Windows验证 22.1 介绍Windows验证 22.1.1 为什么使用Windows验证 22.1.2 为什么不使用Windows验证 22.1.3 Windows验证机制 22.2 实现Windows验证 22.2.1 配置IIS 7.x 22.2.2 配置ASP.NET 22.2.3 IIS 7.x管道 22.2.4 禁止匿名用户访问 22.2.5 访问Windows用户信息 22.3 身份模拟 22.3.1 Windows中的身份模拟和委托 22.3.2 经过配置的身份模拟 22.3.3 可编程的身份模拟 22.4 总结 第23章 授权和角色 23.1 URL 授权 23.2 文件授权 23.3 在代码中检查授权 23.3.1 使用IsInRole()方法 23.3.2 使用PrincipalPermission类 23.4 为基于角色的授权使用角色API 23.4.1 和角色一起使用LoginView控件 23.4.2 通过编程访问角色 23.4.3 在Windows验证中使用角色API 23.5 IIS 7.x里的授权和角色 23.5.1 在IIS 7.x里使用ASP.NET角色授权 23.5.2 在IIS 7.x中管理ASP.NET角色 23.6 总结 第24章 用户配置 24.1 理解用户配置 24.1.1 用户配置的性能 24.1.2 用户配置如何存储数据 24.1.3 用户配置和验证 24.1.4 用户配置与自定义的数据组件 24.2 使用SqlProfileProvider 24.2.1 创建用户配置表 24.2.2 配置提供程序 24.2.3 定义用户配置属性 24.2.4 使用用户配置属性 24.2.5 用户配置序列化 24.2.6 用户配置组 24.2.7 用户配置和自定义的数据类型 24.2.8 用户配置API 24.2.9 匿名用户配置 24.3 自定义的用户配置提供程序 24.3.1 自定义的用户配置提供程序类 24.3.2 设计FactoredProfileProvider 24.3.3 通过编码实现FactoredProfileProvider 24.3.4 测试FactoredProfileProvider 24.4 总结 第25章 加密 25.1 加密数据:机密性问题 25.2 .NET加密命名空间 25.3 理解.NET加密类 25.3.1 对称加密算法 25.3.2 非对称加密 25.3.3 抽象加密类 25.3.4 ICryptoTransform接口 25.3.5 CryptoStream类 25.4 加密敏感数据 25.4.1 管理秘密信息 25.4.2 使用对称算法 25.4.3 使用非对称算法 25.4.4 加密数据库中的敏感数据 25.5 加密查询字符串 25.5.1 包装查询字符串 25.5.2 创建一个测试页面 25.6 总结 第26章 自定义成员资格提供程序 26.1 自定义提供程序的架构 26.2 创建自定义提供程序的基本步骤 26.2.1 自定义提供程序的总体设计 26.2.2 设计并实现自定义存储 26.2.3 实现提供程序类 26.2.4 使用自定义提供程序类 26.3 总结 第五部分 高级用户界面 第27章 自定义服务器控件 27.1 自定义服务器控件入门 27.1.1 创建简单的自定义控件 27.1.2 使用自定义控件 27.1.3 工具箱中的自定义控件 27.1.4 创建支持样式属性的Web控件 27.1.5 呈现过程 27.2 处理不同的浏览器 27.2.1 HtmlTextWriter 27.2.2 浏览器检测 27.2.3 浏览器属性 27.2.4 覆盖浏览器类型侦测 27.2.5 自适应呈现 27.3 控件状态和事件 27.3.1 视图状态 27.3.2 控件状态 27.3.3 回传数据和change事件 27.3.4 触发回传 27.4 扩展现有的Web控件 27.4.1 组合控件 27.4.2 派生控件 27.5 总结 第28章 图形、GDI+和图表 28.1 ImageMap控件 28.1.1 创建热点 28.1.2 处理热点单击 28.1.3 自定义热点 28.2 使用GDI+画图 28.2.1 简单绘制 28.2.2 图像格式和质量 28.2.3 Graphics类 28.2.4 使用GraphicsPath 28.2.5 画笔 28.2.6 画刷 28.3 在网页上嵌入动态图形 28.3.1 使用PNG格式 28.3.2 传递信息给动态图像 28.3.3 使用GDI+的自定义控件 28.4 使用Chart控件 28.4.1 创建基本的图表 28.4.2 用数据填充图表 28.5 总结 第29章 JavaScript和Ajax技术 29.1 JavaScript本质 29.1.1 HTML DOM 29.1.2 客户端事件 29.1.3 脚本块 29.1.4 操纵HTML元素 29.1.5 调试JavaScript 29.2 基本的JavaScript示例 29.2.1 创建JavaScript页面处理器 29.2.2 使用JavaScript异步下载图片 29.2.3 呈现脚本块 29.3 脚本注入攻击 29.3.1 请求验证 29.3.2 禁用请求验证 29.3.3 扩展请求验证 29.4 带有JavaScript的自定义控件 29.4.1 弹出窗口 29.4.2 滚动按钮 29.5 框架 29.5.1 框架导航 29.5.2 内联框架 29.6 理解Ajax 29.6.1 XMLHttpRequest对象 29.6.2 Ajax示例 29.7 在客户端回调中使用Ajax 29.7.1 创建客户端回调 29.7.2 深入了解客户端回调 29.7.3 自定义控件里的客户端回调 29.8 总结 第30章 ASP.NETAJAX 30.1 介绍ASP.NETAJAX 30.1.1 客户端的ASP.NETAJAX:脚本库 30.1.2 服务器端的ASP.NETAJAX:ScriptManager 30.2 服务器回调 30.2.1 ASP.NETAJAX中的Web服务 30.2.2 在页面里放置Web方法 30.2.3 ASP.NETAJAX应用程序服务 30.3 ASP.NETAJAX服务器控件 30.3.1 使用UpdatePanel的局部呈现 30.3.2 使用Timer的定时刷新 30.3.3 使用UpdateProgress的耗时更新 30.3.4 管理浏览器历史 30.4 深入客户端库 30.4.1 理解客户端模型 30.4.2 JavaScript的面向对象编程 30.4.3 网页框架 30.5 控件扩展器 30.5.1 安装ASP.NETAJAX控件工具包 30.5.2 AutoCompleteExtender 30.5.3 ASP.NETAJAX控件工具包 30.6 总结 第31章 使用Web部件页面的门户网站 31.1 典型门户页面 31.2 基本Web部件页面 31.2.1 创建页面设计 31.2.2 WebPartManager和WebPartZone 31.2.3 向页面添加Web部件 31.2.4 定制页面 31.3 创建Web部件 31.3.1 简单的Web部件任务 31.3.2 开发高级Web部件 31.3.3 Web部件编辑器 31.3.4 连接Web部件 31.3.5 自定义动词和Web部件 31.3.6 用户控件和高级Web部件 31.3.7 动态上传Web部件 31.3.8 对Web部件的授权 31.3.9 个性化的最后任务 31.4 总结 第32章 MVC 32.1 MVC和Web表单的选择 32.2 创建基本的MVC应用程序 32.2.1 创建模型 32.2.2 创建控制器 32.2.3 创建Index视图 32.2.4 测试(未完成的)应用程序 32.2.5 完成控制器和视图 32.2.6 修改Site.Master文件 32.3 扩展基础的MVC应用程序 32.3.1 配置路由 32.3.2 增加错误处理 32.3.3 增加验证 32.3.4 增强数据存储访问 32.3.5 增加对外键约束的支持 32.4 自定义视图 32.4.1 修改视图 32.4.2 增加视图数据 32.5 强化模型 32.6 验证数据 32.6.1 执行基本的验证 32.6.2 增加验证标注 32.7 使用动作结果 32.7.1 返回JSON数据 32.7.2 调用其他控制器方法 32.8 总结 第33章 动态数据 33.1 创建动态数据应用程序 33.1.1 创建动态数据网站 33.1.2 检验动态数据网站 33.2 深入理解动态数据项目 33.3 自定义动态数据网站 33.3.1 使用模板进行自定义 33.3.2 使用路由进行自定义 33.3.3 使用元数据进行自定义 33.3.4 自定义验证 33.4 总结 第34章 Silverlight 34.1 理解Silverlight 34.1.1 Silverlight与Flash对比 34.1.2 Silverlight系统需求 34.2 创建Silverlight解决方案 34.2. 1 Silverlight编译 34.2.2 入口页面 34.3 创建Silverlight项目 34.3.1 设计Silverlight页面 34.3.2 理解XAML 34.3.3 设置属性 34.3.4 XAML 代码隐藏 34.3.5 处理事件 34.3.6 了解Silverlight类库 34.4 布局 34.4.1 Canvas 34.4.2 网格 34.5 动画 34.5.1 动画基础知识 34.5.2 定义动画 34.5.3 StoryBoard类 34.5.4 交互式动画实例 34.5.5 变换 34.6 Silverlight使用Web服务 34.6.1 创建Web服务 34.6.2 添加Web引用 34.6.3 调用Web服务 34.6.4 配置Web服务URL 34.6.5 跨域Web服务调用 34.7 总结
内容简介   《ASP.NET 4高级程序设计(第4版)》是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的建议。书中还深入讲述了其他ASP.NET图书遗漏的高级主题,如自定义控件的创建、图像处理、加密等。此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软的ASP.NETAJAX平台。另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。   《ASP.NET 4高级程序设计(第4版)》适合各层次的ASP.NET程序员阅读。 作者简介 作者:(美)麦克唐纳 目录 第一部分 核心概念 第1章 ASP.NET简介 2 1.1 ASP.NET的7大要点 2 1.1.1 要点1:ASP.NET是同.NETFramework集成在一起的 2 1.1.2 要点2:ASP.NET是编译执行的,而不是解释执行的 3 1.1.3 要点3:ASP.NET支持多语言 4 1.1.4 要点4:ASP.NET运行在公共语言运行库内 6 1.1.5 要点5:ASP.NET是面向对象的 7 1.1.6 要点6:ASP.NET支持所有的浏览器 8 1.1.7 要点7:ASP.NET易于部署和配置 8 1.2 ASP.NET的演变 9 1.2.1 ASP.NET1.0和ASP.NET1.1 9 1.2.2  ASP.NET2.0 9 1.2.3 ASP.NET3.5 10 1.2.4 ASP.NET4 12 1.2.5 Silverlight 14 1.3 总结 15 第2章 Visual Studio 16 2.1 Visual Studio 16 2.1.1 网站和Web项目 17 2.1.2 创建无项目文件的网站 18 2.1.3 设计网页 21 2.2 Visual StudioIDE 26 2.2.1 解决方案资源管理器 28 2.2.2 文档窗口 29 2.2.3 工具箱 29 2.2.4 错误列表和任务列表 30 2.2.5 服务器资源管理器 31 2.3 代码编辑器 32 2.3.1 添加程序集引用 33 2.3.2 智能感知和大纲显示 35 2.3.3 Visual Studio 2010改进 37 2.4 编码模型 42 2.4.1 代码隐藏文件如何与页面连接 44 2.4.2 控件标签如何与页面变量连接 44 2.4.3 事件如何与事件处理程序连接 46 2.5 Web项目 47 2.5.1 基于项目的开发 47 2.5.2 创建Web项目 48 2.5.3 迁移旧版Visual Studio创建的网站 49 2.6 Visual Studio调试 51 2.6.1 单步调试 52 2.6.2 变量监视 54 2.6.3 高级断点 55 2.7 WebDevelopment Helper 56 2.8 总结 57 第3章 Web窗体 58 3.1 页面处理 58 3.1.1 HTML表单 59 3.1.2 动态用户界面 60 3.1.3 ASP.NET事件模型 61 3.1.4 自动回送 62 3.1.5 视图状态 63 3.1.6 XHTML兼容性 66 3.1.7 客户端控件ID 71 3.2 Web窗体处理阶段 73 3.2.1 页面框架初始化 74 3.2.2 用户代码初始化 74 3.2.3 验证 74 3.2.4 事件处理 75 3.2.5 自动数据绑定 75 3.2.6 清除 76 3.2.7 页面流示例 76 3.3 作为控件容器的页面 78 3.3.1 显示控件树 78 3.3.2 页头 82 3.3.3 动态控件的创建 82 3.4 Page类 84 3.4.1 Session、Application和Cache 84 3.4.2 Request 85 3.4.3 Response 86 3.4.4 Server 88 3.4.5 User 90 3.4.6 Trace 91 3.4.7 访问其他类中的HTTP上下文 96 3.5 总结 96 第4章 服务器控件 97 4.1 服务器控件的类型 97 4.2 HTML服务器控件 99 4.2.1 HtmlControl类 100 4.2.2 HtmlContainerControl类 100 4.2.3 HtmlInputControl类 100 4.2.4 HTML服务器控件类 101 4.2.5 设置Style特性和其他属性 102 4.2.6 通过编程创建服务器控件 103 4.2.7 处理服务器端事件 104 4.3 Web控件 107 4.3.1 WebControl基类 107 4.3.2 基本的Web控件类 108 4.3.3 单位 109 4.3.4 枚举 110 4.3.5 颜色 110 4.3.6 字体 111 4.3.7 焦点 12 4.3.8 默认按钮 113 4.3.9 可滚动面板 114 4.3.10 处理Web控件事件 114 4.4 List控件 116 4.4.1 Selectable列表控件 117 4.4.2 BulletedList控件 120 4.5 输入验证控件 121 4.5.1 验证控件 121 4.5.2 验证流程 122 4.5.3 BaseValidator类 122 4.5.4 RequiredFieldValidator控件 124 4.5.5 RangeValidator控件 124 4.5.6 CompareValidator控件 125 4.5.7 RegularExpressionValidator控件 125 4.5.8 CustomValidator控件 127 4.5.9 ValidationSummary控件 128 4.5.10 通过编程使用验证器 129 4.5.11 验证组 130 4.6 富控件 132 4.6.1 AdRotator控件 132 4.6.2 Calendar控件 134 4.7 总结 136 第5章 ASP.NET应用程序 137 5.1 剖析ASP.NET应用程序 137 5.1.1 应用程序域 137 5.1.2 应用程序生命周期 138 5.1.3 应用程序更新 139 5.1.4 应用程序目录结构 139 5.2 global.asax应用程序文件 140 5.2.1 应用程序事件 141 5.2.2 演示应用程序事件 143 5.3 ASP.NET配置 144 5.3.1 machine.config文件 144 5.3.2 web.config文件 147 5.3.3 设置 150 5.3.4  150 5.3.5  150 5.3.6  152 5.3.7 通过编程读写配置节 152 5.3.8 网站管理工具(WAT) 155 5.3.9 扩展配置文件结构 156 5.3.10 加密配置节 159 5.4 .NET组件 161 5.4.1 创建组件 161 5.4.2 通过App_Code目录使用组件 162 5.4.3 通过Bin目录使用组件 163 5.5 扩展HTTP管道 165 5.5.1 HTTP处理程序 165 5.5.2 创建自定义的HTTP处理程序 167 5.5.3 配置自定义的HTTP处理程序 168 5.5.4 使用无须配置的HTTP处理程序 169 5.5.5 创建高级的HTTP处理程序 169 5.5.6 为非HTML内容创建HTTP处理程序 171 5.5.7 HTTP模块 173 5.5.8 创建自定义HTTP模块 174 5.6 总结 176 第6章 状态管理 177 6.1 ASP.NET状态管理 177 6.2 视图状态 179 6.2.1 视图状态示例 180 6.2.2 在视图状态中保存对象 181 6.2.3 视图状态评估 183 6.2.4 有选择地禁用视图状态 184 6.2.5 视图状态安全 185 6.3 在页面间传送信息 186 6.3.1 查询字符串 187 6.3.2 跨页回发 188 6.4 cookie 193 6.5 会话状态 194 6.5.1 会话架构 194 6.5.2 使用会话状态 196 6.5.3 配置会话状态 197 6.5.4 会话状态安全 202 6.6 应用程序状态 203 6.7 总结 206 第二部分 数据访问 第7章 基础 208 7.1 ADO.NET架构 209 7.1.1 ADO.NET数据提供程序 209 7.1.2 ADO.NET的标准化 210 7.1.3 基本ADO.NET类 211 7.2 Connection类 212 7.2.1 连接字符串 212 7.2.2 测试连接 214 7.2.3 连接池 215 7.3 Command类和DataReader类 217 7.3.1 Command基础 217 7.3.2 DataReader类 218 7.3.3  ExecuteReader()方法和DataReader 218 7.3.4 ExecuteScalar()方法 223 7.3.5 ExecuteNonQuery()方法 223 7.3.6 SQL注入攻击 224 7.3.7 使用参数化命令 226 7.3.8 调用存储过程 227 7.4 事务 229 7.4.1 事务和ASP.NET应用程序 230 7.4.2 隔离级别 234 7.4.3 保存点 235 7.5 提供程序无关的代码 235 7.5.1 创建工厂 236 7.5.2 用工厂创建对象 237 7.5.3 使用提供程序无关的代码的查询 237 7.6 总结 239 第8章 数据组件和DataSet 240 8.1 构建数据访问组件 240 8.1.1 数据包 241 8.1.2 存储过程 242 8.1.3 数据应用类 243 8.1.4 测试数据库组件 248 8.2 非连接的数据 249 8.2.1 Web应用程序和DataSet 250 8.2.2 XML集成 251 8.3 DataSet类 251 8.4  DataAdapter类 252 8.4.1 填充DataSet 253 8.4.2 使用多个表和关系 254 8.4.3 查找特定行 257 8.4.4 在数据访问类里使用DataSet 257 8.4.5 数据绑定 258 8.5 DataView类 259 8.5.1 使用DataView排序 259 8.5.2 使用DataView过滤 261 8.5.3 使用关系的高级过滤 262 8.5.4 计算列 263 8.6 总结 264 第9章 数据绑定 265 9.1 基本的数据绑定 265 9.1.1 单值绑定 266 9.1.2 其他类型的表达式 268 9.1.3 重复值绑定 271 9.2 数据源控件 277 9.3 SqlDataSource 278 9.3.1 选择记录 279 9.3.2 参数化命令 281 9.3.3 错误处理 285 9.3.4 更新记录 286 9.3.5 删除记录 289 9.3.6 插入记录 289 9.3.7 SqlDataSource的不足 290 9.4 ObjectDataSource 291 9.4.1 选择记录 291 9.4.2 更新记录 295 9.4.3 使用数据对象执行更新 296 9.5 数据源控件的限制 299 9.5.1 问题 299 9.5.2 添加其他项 300 9.5.3 使用SqlDataSource处理其他选项 301 9.5.4 使用ObjectDataSource处理其他选项 301 9.6 总结 302 第10章 富数据控件 303 10.1 GridView 303 10.2 格式化GridView 307 10.2.1 格式化字段 307 10.2.2 样式 308 10.2.3 格式化特定值 311 10.3 GridView行选择 313 10.3.1 使用选择来创建主-从表单 314 10.3.2 SelectedIndexChanged事件 315 10.3.3 将数据字段用作选择按钮 315 10.4 对GridView排序 316 10.4.1 使用SqlDataSource排序 317 10.4.2 使用ObjectDataSource排序 318 10.4.3 排序和选择 319 10.4.4 高级排序 319 10.5 GridView分页 320 10.5.1 自动分页 320 10.5.2 分页和选择 322 10.5.3 ObjectDataSource的自定义分页 322 10.5.4 定制分页栏 324 10.6 GridView模板 325 10.6.1 使用多个模板 327 10.6.2 在Visual Studio中编辑模板 328 10.6.3 绑定到方法 328 10.6.4 处理模板中的事件 330 10.6.5 使用模板编辑 330 10.6.6 模板中的客户端ID 335 10.7 ListView 336 10.7.1 分组 338 10.7.2 分页 340 10.8 DetailsView和FormView 341 10.8.1 DetailsView 341 10.8.2 FormView 344 10.9 高级网格 345 10.9.1 GridView中的汇总 345 10.9.2 单个表中的父/子视图 347 10.9.3 使用查找表编辑字段 349 10.9.4 处理来自数据库的图片 351 10.9.5 探测并发冲突 355 10.10 总结 359 第11章 缓存和异步页面 360 11.1 理解ASP.NET缓存 360 11.2 输出缓存 361 11.2.1 声明性的输出缓存 361 11.2.2 缓存和查询字符串 362 11.2.3 使用特定查询字符串参数的缓存 363 11.2.4 自定义缓存控制 364 11.2.5 使用HttpCachePolicy类进行缓存 365 11.2.6 缓存后替换和部分页缓存 365 11.2.7 缓存用户配置 367 11.2.8 缓存配置 368 11.2.9 输出缓存扩展 369 11.3 数据缓存 373 11.3.1 向缓存添加项目 373 11.3.2 简单的缓存测试 375 11.3.3 缓存优先级 376 11.3.4 使用数据源控件的缓存 376 11.4 缓存依赖 379 11.4.1 文件和缓存项目依赖 379 11.4.2 聚合依赖 380 11.4.3 移除项目回调 381 11.4.4 理解SQL缓存通知 383 11.4.5 缓存通知的工作方式 384 11.4.6 启用通知 384 11.4.7 创建缓存依赖 385 11.5 自定义缓存依赖 386 11.5.1 基本的自定义缓存依赖 386 11.5.2 使用消息队列的自定义缓存依赖 387 11.6 异步页面 389 11.6.1 创建异步页面 390 11.6.2 在异步页面中查询数据 392 11.6.3 错误处理 393 11.6.4 在异步任务中使用缓存 395 11.6.5 多异步任务和超时 397 11.7 总结 399 第12章 文件和流 400 12.1 使用文件系统 400 12.1.1 Directory类和File类 400 12.1.2 DirectoryInfo类和FileInfo类 402 12.1.3 DriveInfo类 404 12.1.4 使用Attributes 405 12.1.5 使用通配符过滤文件 407 12.1.6 获取文件的版本信息 407 12.1.7 Path类 408 12.1.8 文件浏览器 410 12.2 使用流读写文件 414 12.2.1 文本文件 415 12.2.2 二进制文件 416 12.2.3 上传文件 417 12.2.4 使文件对多用户安全 419 12.2.5 压缩 423 12.3 序列化 423 12.4 总结 426 第13章 LINQ 427 13.1 LINQ基础 427 13.1.1 延迟执行 429 13.1.2 LINQ是如何工作的 429 13.1.3 LINQ表达式 430 13.1.4 揭秘LINQ表达式 436 13.2 LINQ to DataSet 439 13.2.1 强类型的DataSet 441 13.2.2 空值 441 13.3 LINQ to Entities 441 13.3.1 生成数据模型 442 13.3.2 数据模型类 442 13.3.3 实体关系 444 13.3.4 查询存储过程 446 13.3.5 LINQ to Entities查询揭秘 447 13.4 数据库操作 452 13.4.1 插入 452 13.4.2 更新 454 13.4.3 删除 454 13.4.4 管理并发 455 13.4.5 处理并发冲突 455 13.5 EntityDataSource控件 459 13.5.1 显示数据 459 13.5.2 获取关联数据 463 13.5.3 编辑数据 464 13.5.4 验证 464 13.6 使用QueryExtender控件 465 13.6.1 使用SearchExperssion 466 13.6.2 使用RangeExpression 467 13.6.3 使用PropertyExpression 467 13.6.4 使用MethodExpression 468 13.7 总结 468 第14章 XML 470 14.1 什么时候使用XML 470 14.2 XML简介 471 14.2.1 XML的优点 472 14.2.2 格式良好的XML 472 14.2.3 XML命名空间 473 14.2.4 XML架构 474 14.3 基于流的XML处理 475 14.3.1 写XML文件 476 14.3.2 读取XML文件 478 14.4 内存中的XML处理 481 14.4.1 XmlDocument 482 14.4.2 XPathNavigator 485 14.4.3 XDocument 486 14.5 搜索XML内容 491 14.5.1 搜索XmlDocument 491 14.5.2 使用XPath搜索XmlDocument 493 14.5.3 使用LINQ搜索XDocument 494 14.6 验证XML内容 496 14.6.1 基本架构 496 14.6.2 验证XmlDocument 497 14.6.3 使用XDocument进行验证 498 14.7 转换XML内容 499 14.7.1 基本的样式表 499 14.7.2 使用XslCompiledTransform 500 14.7.3 使用Xml控件 501 14.7.4 使用LINQ to XML转换XML 502 14.8 XML数据绑定 504 14.8.1 非层次化绑定 504 14.8.2 使用XPath 506 14.8.3 嵌套的网格 508 14.8.4 使用TreeView的层次化绑定 509 14.8.5 使用XSLT 511 14.8.6 绑定到来自其他源的XML内容 512 14.8.7 通过XmlDataSource更新XML 513 14.9 XML和ADO.NET数据集 513 14.9.1 把DataSet转换为XML 514 14.9.2 把DataSet作为XML访问 515 14.10 总结 517 第三部分 构建ASP.NET网站 第15章 用户控件 520 15.1 用户控件基础 520 15.1.1 创建简单的用户控件 521 15.1.2 把页面转换成用户控件 522 15.2 为用户控件添加代码 523 15.2.1 处理事件 523 15.2.2 添加属性 524 15.2.3 使用自定义对象 525 15.2.4 添加事件 528 15.2.5 公开内部Web控件 530 15.3 动态加载用户控件 531 15.4 局部页面缓存 534 15.4.1 VaryByControl 535 15.4.2 共享缓存控件 536 15.5 总结 537 第16章 主题和母版页 538 16.1 层叠样式表 538 16.1.1 创建样式表 538 16.1.2 应用样式表规则 540 16.2 主题 542 16.2.1 主题文件夹和外观 543 16.2.2 应用简单主题 544 16.2.3 处理主题冲突 545 16.2.4 为同一控件创建多个外观 546 16.2.5 含有模板和图片的外观 547 16.2.6 在主题里使用CSS 549 16.2.7 通过配置文件来应用主题 549 16.2.8 动态应用主题 550 16.3 标准化网站布局 551 16.4 母版页基础 552 16.4.1 简单的母版页 552 16.4.2 简单的内容页 554 16.4.3 默认内容 556 16.4.4 具有表格和CSS布局的母版页 556 16.4.5 母版页和相对路径 559 16.4.6 通过配置文件应用母版页 559 16.5 高级母版页 560 16.5.1 和母版页类交互 560 16.5.2 动态设置母版页 561 16.5.3 嵌套母版页 561 16.6 总结 563 第17章 网站导航 564 17.1 多视图页面 564 17.1.1 MultiView控件 565 17.1.2 Wizard控件 568 17.2 站点地图 575 17.2.1 定义站点地图 576 17.2.2 绑定站点地图 577 17.2.3 导航路径 578 17.2.4 显示站点地图的一部分 580 17.2.5 站点地图对象 583 17.2.6 加入自定义站点地图信息 584 17.2.7 创建自定义的SiteMapProvider 584 17.2.8 安全调整 590 17.3 URL映射和路由 592 17.3.1 URL映射 592 17.3.2 URL路由 593 17.4 TreeView控件 594 17.4.1 TreeNode 595 17.4.2 按需填充节点 597 17.4.3 TreeView样式 598 17.5 Menu控件 601 17.5.1 Menu样式 603 17.5.2 Menu模板 605 17.6 总结 606 第18章 网站部署 607 18.1 安装和配置IIS 607 18.1.1 安装IIS 7 607 18.1.2 管理IIS 7 608 18.2 部署网站 610 18.2.1 通过复制文件进行部署 611 18.2.2 使用Web部署 614 18.2.3 通过FTP部署 621 18.3 管理网站 626 18.3.1 创建新站点 626 18.3.2 创建虚拟目录 627 18.3.3 使用VirtualPathProvider 628 18.3.4 使用应用程序池 631 18.3.5 使用应用程序预热 633 18.4 扩展集成管道 634 18.4.1 创建处理程序 634 18.4.2 部署处理程序 635 18.4.3 配置处理程序 635 18.4.4 测试处理程序 636 18.5 总结 636 第四部分 安全 第19章 ASP.NET安全模型 638 19.1 为何创建安全软件 638 19.1.1 理解潜在的威胁 638 19.1.2 安全编程原则 639 19.1.3 理解Gatekeeper 640 19.2 理解安全级别 641 19.2.1 验证 641 19.2.2 授权 642 19.2.3 机密性和完整性 643 19.2.4 互相协作 643 19.3 理解SSL 644 19.3.1 理解证书 645 19.3.2 理解SSL 645 19.3.3 在IIS 7.x中配置SSL 646 19.4 总结 649 第20章 表单验证 650 20.1 表单验证介绍 650 20.1.1 为什么使用表单验证 650 20.1.2 为什么不使用表单验证 652 20.1.3 为什么不自己实现cookie验证 653 20.1.4 表单验证类 654 20.2 实现表单验证 655 20.2.1 配置表单验证 655 20.2.2 禁止匿名用户访问 657 20.2.3 创建自定义登录页面 658 20.2.4 自定义凭证存储 662 20.2.5 表单验证中的持久化cookie 663 20.3 IIS 7.x和表单验证 665 20.4 总结 669 第21章 成员资格 670 21.1 介绍ASP.NET的成员资格API 670 21.2 使用成员资格API 672 21.2.1 配置表单验证 673 21.2.2 创建数据存储 674 21.2.3 配置连接字符串和成员资格提供程序 679 21.2.4 创建并验证用户 681 21.3 使用安全控件 683 21.3.1 Login控件 684 21.3.2 LoginStatus控件 693 21.3.3 LoginView控件 693 21.3.4 PasswordRecovery控件 694 21.3.5 ChangePassword控件 697 21.3.6 CreateUserWizard控件 698 21.4 在IIS 7.x里配置成员资格 702 21.4.1 配置提供程序和用户 702 21.4.2 在其他应用程序里使用成员资格API 703 21.5 使用Membership类 705 21.5.1 从存储中获得用户 706 21.5.2 更新存储中的用户 708 21.5.3 创建和删除用户 708 21.5.4 检验用户 709 21.6 总结 709 第22章 Windows验证 710 22.1 介绍Windows验证 710 22.1.1 为什么使用Windows验证 710 22.1.2 为什么不使用Windows验证 711 22.1.3 Windows验证机制 712 22.2 实现Windows验证 717 22.2.1 配置IIS 7.x 717 22.2.2 配置ASP.NET 718 22.2.3 IIS 7.x管道 719 22.2.4 禁止匿名用户访问 722 22.2.5 访问Windows用户信息 723 22.3 身份模拟 727 22.3.1 Windows中的身份模拟和委托 728 22.3.2 经过配置的身份模拟 729 22.3.3 可编程的身份模拟 729 22.4 总结 732 第23章 授权和角色 733 23.1 URL 授权 733 23.2 文件授权 738 23.3 在代码中检查授权 739 23.3.1 使用IsInRole()方法 739 23.3.2 使用PrincipalPermission类 740 23.4 为基于角色的授权使用角色API 742 23.4.1 和角色一起使用LoginView控件 747 23.4.2 通过编程访问角色 748 23.4.3 在Windows验证中使用角色API 750 23.5 IIS 7.x里的授权和角色 752 23.5.1 在IIS 7.x里使用ASP.NET角色授权 754 23.5.2 在IIS 7.x中管理ASP.NET角色 756 23.6 总结 757 第24章 用户配置 758 24.1 理解用户配置 758 24.1.1 用户配置的性能 758 24.1.2 用户配置如何存储数据 759 24.1.3 用户配置和验证 760 24.1.4 用户配置与自定义的数据组件 760 24.2 使用SqlProfileProvider 761 24.2.1 创建用户配置表 761 24.2.2 配置提供程序 763 24.2.3 定义用户配置属性 764 24.2.4 使用用户配置属性 764 24.2.5 用户配置序列化 766 24.2.6 用户配置组 767 24.2.7 用户配置和自定义的数据类型 768 24.2.8 用户配置API 771 24.2.9 匿名用户配置 773 24.3 自定义的用户配置提供程序 775 24.3.1 自定义的用户配置提供程序类 775 24.3.2 设计FactoredProfileProvider 777 24.3.3 通过编码实现FactoredProfileProvider 778 24.3.4 测试FactoredProfileProvider 781 24.4 总结 784 第25章 加密 785 25.1 加密数据:机密性问题 785 25.2 .NET加密命名空间 786 25.3 理解.NET加密类 789 25.3.1 对称加密算法 790 25.3.2 非对称加密 791 25.3.3 抽象加密类 791 25.3.4 ICryptoTransform接口 792 25.3.5 CryptoStream类 793 25.4 加密敏感数据 793 25.4.1 管理秘密信息 794 25.4.2 使用对称算法 795 25.4.3 使用非对称算法 799 25.4.4 加密数据库中的敏感数据 801 25.5 加密查询字符串 806 25.5.1 包装查询字符串 806 25.5.2 创建一个测试页面 808 25.6 总结 810 第26章 自定义成员资格提供程序 811 26.1 自定义提供程序的架构 811 26.2 创建自定义提供程序的基本步骤 812 26.2.1 自定义提供程序的总体设计 813 26.2.2 设计并实现自定义存储 813 26.2.3 实现提供程序类 820 26.2.4 使用自定义提供程序类 837 26.3 总结 840 第五部分 高级用户界面 第27章 自定义服务器控件 842 27.1 自定义服务器控件入门 842 27.1.1 创建简单的自定义控件 842 27.1.2 使用自定义控件 844 27.1.3 工具箱中的自定义控件 845 27.1.4 创建支持样式属性的Web控件 847 27.1.5 呈现过程 850 27.2 处理不同的浏览器 852 27.2.1 HtmlTextWriter 852 27.2.2 浏览器检测 852 27.2.3 浏览器属性 853 27.2.4 覆盖浏览器类型侦测 854 27.2.5 自适应呈现 855 27.3 控件状态和事件 856 27.3.1 视图状态 856 27.3.2 控件状态 858 27.3.3 回传数据和change事件 860 27.3.4 触发回传 862 27.4 扩展现有的Web控件 863 27.4.1 组合控件 864 27.4.2 派生控件 866 27.5 总结 869 第28章 图形、GDI+和图表 870 28.1 ImageMap控件 870 28.1.1 创建热点 871 28.1.2 处理热点单击 872 28.1.3 自定义热点 873 28.2 使用GDI+画图 875 28.2.1 简单绘制 875 28.2.2 图像格式和质量 877 28.2.3 Graphics类 878 28.2.4 使用GraphicsPath 880 28.2.5 画笔 881 28.2.6 画刷 883 28.3 在网页上嵌入动态图形 885 28.3.1 使用PNG格式 885 28.3.2 传递信息给动态图像 886 28.3.3 使用GDI+的自定义控件 888 28.4 使用Chart控件 892 28.4.1 创建基本的图表 892 28.4.2 用数据填充图表 897 28.5 总结 904 第29章 JavaScript和Ajax技术 905 29.1 JavaScript本质 905 29.1.1 HTML DOM 906 29.1.2 客户端事件 906 29.1.3 脚本块 908 29.1.4 操纵HTML元素 910 29.1.5 调试JavaScript 910 29.2 基本的JavaScript示例 912 29.2.1 创建JavaScript页面处理器 912 29.2.2 使用JavaScript异步下载图片 915 29.2.3 呈现脚本块 919 29.3 脚本注入攻击 920 29.3.1 请求验证 921 29.3.2 禁用请求验证 922 29.3.3 扩展请求验证 923 29.4 带有JavaScript的自定义控件 925 29.4.1 弹出窗口 925 29.4.2 滚动按钮 928 29.5 框架 931 29.5.1 框架导航 932 29.5.2 内联框架 933 29.6 理解Ajax 934 29.6.1 XMLHttpRequest对象 935 29.6.2 Ajax示例 936 29.7 在客户端回调中使用Ajax 939 29.7.1 创建客户端回调 940 29.7.2 深入了解客户端回调 945 29.7.3 自定义控件里的客户端回调 946 29.8 总结 949 第30章 ASP.NETAJAX 950 30.1 介绍ASP.NETAJAX 950 30.1.1 客户端的ASP.NETAJAX:脚本库 951 30.1.2 服务器端的ASP.NETAJAX:ScriptManager 952 30.2 服务器回调 952 30.2.1 ASP.NETAJAX中的Web服务 953 30.2.2 在页面里放置Web方法 959 30.2.3 ASP.NETAJAX应用程序服务 960 30.3 ASP.NETAJAX服务器控件 966 30.3.1 使用UpdatePanel的局部呈现 966 30.3.2 使用Timer的定时刷新 973 30.3.3 使用UpdateProgress的耗时更新 974 30.3.4 管理浏览器历史 976 30.4 深入客户端库 979 30.4.1 理解客户端模型 980 30.4.2 JavaScript的面向对象编程 981 30.4.3 网页框架 987 30.5 控件扩展器 991 30.5.1 安装ASP.NETAJAX控件工具包 992 30.5.2 AutoCompleteExtender 993 30.5.3 ASP.NETAJAX控件工具包 996 30.6 总结 999 第31章 使用Web部件页面的门户网站 1000 31.1 典型门户页面 1000 31.2 基本Web部件页面 1002 31.2.1 创建页面设计 1002 31.2.2 WebPartManager和WebPartZone 1003 31.2.3 向页面添加Web部件 1004 31.2.4 定制页面 1008 31.3 创建Web部件 1010 31.3.1 简单的Web部件任务 1010 31.3.2 开发高级Web部件 1017 31.3.3 Web部件编辑器 1024 31.3.4 连接Web部件 1029 31.3.5 自定义动词和Web部件 1036 31.3.6 用户控件和高级Web部件 1037 31.3.7 动态上传Web部件 1040 31.3.8 对Web部件的授权 1044 31.3.9 个性化的最后任务 1045 31.4 总结 1046 第32章 MVC 1047 32.1 MVC和Web表单的选择 1047 32.2 创建基本的MVC应用程序 1047 32.2.1 创建模型 1048 32.2.2 创建控制器 1049 32.2.3 创建Index视图 1050 32.2.4 测试(未完成的)应用程序 1050 32.2.5 完成控制器和视图 1051 32.2.6 修改Site.Master文件 1053 32.3 扩展基础的MVC应用程序 1053 32.3.1 配置路由 1054 32.3.2 增加错误处理 1055 32.3.3 增加验证 1056 32.3.4 增强数据存储访问 1057 32.3.5 增加对外键约束的支持 1059 32.4 自定义视图 1059 32.4.1 修改视图 1060 32.4.2 增加视图数据 1062 32.5 强化模型 1063 32.6 验证数据 1066 32.6.1 执行基本的验证 1067 32.6.2 增加验证标注 1068 32.7 使用动作结果 1071 32.7.1 返回JSON数据 1072 32.7.2 调用其他控制器方法 1072 32.8 总结 1074 第33章 动态数据 1075 33.1 创建动态数据应用程序 1075 33.1.1 创建动态数据网站 1075 33.1.2 检验动态数据网站 1077 33.2 深入理解动态数据项目 1080 33.3 自定义动态数据网站 1080 33.3.1 使用模板进行自定义 1081 33.3.2 使用路由进行自定义 1087 33.3.3 使用元数据进行自定义 1094 33.3.4 自定义验证 1099 33.4 总结 1103 第34章 Silverlight 1104 34.1 理解Silverlight 1105 34.1.1 Silverlight与Flash对比 1106 34.1.2 Silverlight系统需求 1107 34.2 创建Silverlight解决方案 1108 34.2. 1 Silverlight编译 1109 34.2.2 入口页面 1110 34.3 创建Silverlight项目 1114 34.3.1 设计Silverlight页面 1114 34.3.2 理解XAML 1117 34.3.3 设置属性 1118 34.3.4 XAML 代码隐藏 1119 34.3.5 处理事件 1120 34.3.6 了解Silverlight类库 1121 34.4 布局 1122 34.4.1 Canvas 1123 34.4.2 网格 1127 34.5 动画 1131 34.5.1 动画基础知识 1132 34.5.2 定义动画 1132 34.5.3 StoryBoard类 1133 34.5.4 交互式动画实例 1135 34.5.5 变换 1138 34.6 Silverlight使用Web服务 1141 34.6.1 创建Web服务 1141 34.6.2 添加Web引用 1142 34.6.3 调用Web服务 1143 34.6.4 配置Web服务URL 1144 34.6.5 跨域Web服务调用 1144 34.7 总结 1146

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧