• 自定义表单数据信息生成


    信息分成三类:数据源、控件、绑定信息
    {XX}表示要被实际值替换的部分。
    数据源:用Hidden,Name=DS${ID}${Updatable},value={SQL}${Keys}$~{kv1},{kv2},...~{kv3},{kv4}
    控件:NAME={ID},value={value}
    控件附加属性:NAME=PRO${ControlID},Value={P1$P2$P3}
    绑定信息:每个绑定控件生成一个,用Hidden,Name=DB${ControlID}${Ind}${DS},Value={DF}${dataType}
    DS$为数据源ID的固定开头,DB$为绑定ID的固定的开头,用于识别。
    {ID}表示本控件的ID值,{SQL}表示数据源的SQL值,{Keys}表示数据源Keys值,{kvx}表示对应的Key的数据。
    {value}表示控件的值。
    {ControlID}表示绑定信息对应的Control的ID值,{DS}表示对应的数据源,{DF}表示对应的数据字段,{Ind}表示对应的行索引,{dataType}表示对应字段的数据类型。


      保存时的处理:
    1.把request.form中的数据分到三个hashtable中,htDataSource存Name以"DS$"以开头"$1"结尾的的key和Value,htDataBind存Name以"DB$"开头的key和Value,htControl存剩下的key和Value。
    2.处理htDataSource中的每个元素的SQL,用正则得到其TableName,其keys和KeysValues,以htDataSource的键为键,TableName和(keys,KeysValues结构数组)构成的结构,生成名为htTable的hashtable。
    3.处理htTable中的每一个元素eleA:
           3.1对eleA.key,查找Value中{DS}为eleA.Key的{ID}的元素eleB,得到eleB.DF和eleB.Ind;根据eleB.Key的{ControlID}得到htControl中的元素eleC,得到eleC.Value 。
           3.2如果eleB.Ind>eleA.Value.KeysValues.Count,则生成Insert语句:组合所有的eleB.DF和eleC.Value,加上eleA.TableName生成Insert;否则,生成Update语句,组合所有的eleB.DF和eleC.Value生成Set子句,eleC.Keys及eleC.KeysValues(ind)生成Where子句,加上eleA.TableName生成Update XXX set XXX Where XXX。
  • 相关阅读:
    Redis 数据类型
    Redis 配置
    Redis 安装
    Redis 简介
    MongoDB 自动增长
    MongoDB 固定集合
    IDEA安装
    云市场 > 软件服务 > 建站系统 > 建站模板-官网企业套餐建站模板-官网企业套餐
    腾讯云SSL证书管理
    4-1 创建项目,并了解项目目录下部分文件的作用
  • 原文地址:https://www.cnblogs.com/Render/p/390196.html
Copyright © 2020-2023  润新知