zoukankan      html  css  js  c++  java
  • 框架-主从表

    页面直接通过查询语句取值方法
     // DataTable页面查询语句取值方法
     DataTable dtTable = DbService.Instance().QueryDataTable("select * from TrainErp_Product_LevelAfter where ProductCode='" + DbService.DtV(curMainDataTable, "ProductCode") + "' and LevelCode='" + mLevelCode + "'") ?? new DataTable();

    主从表
    1.列表页保存方法体增加:
    $("body").on("click", ".save", function() {
                    $.asFormSetHidden(gConfig.gridFormId, "mc", gConfig.mc);
                    $.asFormSetHidden(gConfig.gridFormId, "procName", "TrainErp_spProductTopicExecute");
                    $.asSetXMLInfo(gConfig.gridFormId,"Xml","TrainErp_Product_ProductTopicAfter");
                    var param = {};
                    $.asAppSubmitFormProc(
                        gConfig.gridFormId, param, function(retData) {
                            //返回正确的数据
                            if (retData.RetStatus == 100 || retData.RetStatus == 101) {
                                //刷新数据
                                $.asTableReloadData(gConfig.id, queryParams);
                                $("#" + gConfig.gridId).show();
                                $("#" + gConfig.detailId + "").hide();
                            } else {
                                alert(retData.RetValue);
                            }
                        }, function() {
                            //表单提交前进行验证
                            //return true 继续进行
                            //return false 阻止提交
                            //alert("进行验证字段是否合法");
                            if ($.asCheckStringEmpty($("#TopicName").val(), true, "课题名称不能为空!")== false) {
                                $("#TopicName").focus();
                                return false;
                            }

                            return true;
                        }, function() {
                            alert("发生错误,请重新提交");
                        });

                    return false;
                });

    2.列表页定义从表选择方法
                //增加一行的事件
                $.asButtonEvent("btnAddRow", "click", function() {
                    var tplInfo = $("#tplRowInfo").html();
                    $("#TrainErp_Product_ProductTopicAfter>tbody").append(tplInfo);

                });
                //删除行事件
                $.asButtonEvent("btnDeleteRow", "click", function() {
                    $("input[name='cblProductTopicAfter']").each(function() {
                        if ($(this).prop("checked") == true) {
                            $(this).parent().parent().remove();
                        }
                    });
                });

    3.列表页编辑从表显示:
    <script id="tplRowInfo" type="textml" style="display: none;">
            <tr>
                <td class="w30"><input type="checkbox" name="cblProductTopicAfter" /></td>
                <td class="w100">@Html.Raw(HtmlControlHelper.GetText("FineArtsPoints", "", 40, false, false))</td>
                <td class="w100">@Html.Raw(HtmlControlHelper.GetText("EncyclopediasPoints", "", 40, false, false))</td>
                <td class="w100">@Html.Raw(HtmlControlHelper.GetText("CorrespondingA", "", 40, false, false))</td>
                <td>@Html.Raw(HtmlControlHelper.GetText("CorrespondingB", "", 40, false, false))</td>
            </tr>
        </script>

    4.详细页编辑从表赋值取值
    String mProductTopicCode = DbService.DtV(curMainDataTable, "ProductTopicCode");
    <table class="">
                                <tr>
                                    <td style=" 40px; padding: 2px;">
                                        <input type="button" name="btnAddRow" id="btnAddRow" class="btnAddRow" value="增加行"/></td>
                                    <td style=" 40px; padding: 2px;">
                                        <input type="button" name="btnDeleteRow" id="btnDeleteRow" class="btnDeleteRow" value="删除行"/></td>
                                    <td></td>
                                </tr>
                            </table>
                            <table class="asDataGrid" id="TrainErp_Product_ProductTopicAfter">
                                <tbody>
                                <tr>
                                    <th class="w30">选择</th>
                                    <th class="w100">美术知识点</th>
                                    <th class="w100">百科知识点</th>
                                    <th class="w100">对应课程A</th>
                                    <th>对应课程B</th>
                                </tr>
                                @{
                                    //课题-课题信息管理
                                    DataTable curDtProductTopicAfter = AppService.QueryDataTable("ds-ProductTopicAfterEdit", " where ProductTopicCode='" + mProductTopicCode + "'", "FineArtsPoints,EncyclopediasPoints,CorrespondingA,CorrespondingB", "Order by ProductTopicInfoId desc", false) ?? new DataTable();
                                    foreach (DataRow dataRow in curDtProductTopicAfter.Rows)
                                    {
                                        <tr>
                                            <td class="w30">
                                            <input type="checkbox" name="cblProductTopicAfter"/></td>
                                            <td class="w100">@Html.Raw(HtmlControlHelper.GetText("FineArtsPoints", dataRow["FineArtsPoints"].ToString(), 40, false, false))</td>
                                            <td class="w100">@Html.Raw(HtmlControlHelper.GetText("EncyclopediasPoints", dataRow["EncyclopediasPoints"].ToString(), 40, false, false))</td>
                                            <td class="w100">@Html.Raw(HtmlControlHelper.GetText("CorrespondingA", dataRow["CorrespondingA"].ToString(), 40, false, false))</td>
                                            <td>@Html.Raw(HtmlControlHelper.GetText("CorrespondingB", dataRow["CorrespondingB"].ToString(), 40, false, false))</td>
                                        </tr>
                                    }
                                }
                                </tbody>
                            </table>

    5.主从表执行存储过程:
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go

    ALTER procedure [dbo].[TrainErp_spProductTopicExecute]
    (
        --输入参数
         @pi_DoCmd varchar(200),
         @pi_ProductTopicCode varchar(50),
         @pi_ProductLevelInfoCode varchar(50),
         @pi_TopicName varchar(50),     
         @pi_Xml varchar(max),
        --输出参数
         @po_Status int output,
         @po_RetValue varchar(200) output
    )
     as
    /*
    @名称:新增产品-等级-水平-课题-课题信息
    @作者:howie  
    @创建时间:2015-3-28
    @修改人:
    @修改时间:
    @修改内容:       
    */




          --定义临时表,用来存放XML转换过来的数据  TrainErp_Product_ProductTopicAfter
          declare @pt_table1 table(FineArtsPoints varchar(50),EncyclopediasPoints varchar(500),CorrespondingA varchar(50),CorrespondingB varchar(50))  
          --对XML数据进行处理,注意下
          DECLARE @pt_idoc1 int --查询下
          exec sp_xml_preparedocument @pt_idoc1 output,@pi_Xml
          insert into @pt_table1  
          select * from openxml(@pt_idoc1,'/ROOT/TrainErp_Product_ProductTopicAfter',1)  
          with(FineArtsPoints varchar(50),EncyclopediasPoints varchar(500),CorrespondingA varchar(50),CorrespondingB varchar(50))  

              
    --增加
    if @pi_DoCmd='add'
     begin
        begin tran

        insert into TrainErp_Product_ProductTopic
        (
          ProductTopicCode,
          ProductLevelInfoCode,
          TopicName      
        )
      values
        (
          @pi_ProductTopicCode,--生成的编号
          @pi_ProductLevelInfoCode,
          @pi_TopicName
        )
        --从表
        insert into TrainErp_Product_ProductTopicAfter
        select newid(),@pi_ProductTopicCode,FineArtsPoints,EncyclopediasPoints,CorrespondingA,CorrespondingB
        from @pt_table1 where FineArtsPoints !=''
            
        if  @@error<>0
        begin
          rollback tran
          set @po_status = 400
          set @po_RetValue='增加失败'
        end
        else
        begin
          commit tran
          set @po_status = 100
          set @po_RetValue='增加成功'
        end
     end

     --修改
     if @pi_DoCmd='modify'
     begin
                    begin tran
                    update TrainErp_Product_ProductTopic set
                        ProductLevelInfoCode=@pi_ProductLevelInfoCode,
                        TopicName=@pi_TopicName
                    where  ProductTopicCode=@pi_ProductTopicCode
                    delete from TrainErp_Product_ProductTopicAfter where ProductTopicCode=@pi_ProductTopicCode
                    --从表
                    insert into TrainErp_Product_ProductTopicAfter
                    select newid(),@pi_ProductTopicCode,FineArtsPoints,EncyclopediasPoints,CorrespondingA,CorrespondingB
                    from @pt_table1 where FineArtsPoints !=''
                    if  @@error<>0
                    begin
                      rollback tran
                      set @po_status = 400
                      set @po_RetValue='修改失败'
                    end
                    else
                    begin
                      commit tran
                      set @po_status = 100
                      set @po_RetValue='修改成功'
                    end
            
     end
     --删除
     if @pi_DoCmd='delete'
     begin
            begin tran
            --先删除从表
            delete from TrainErp_Product_ProductTopicAfter where ProductTopicCode=@pi_ProductTopicCode
            --再删除主表
            delete from TrainErp_Product_ProductTopic where ProductTopicCode=@pi_ProductTopicCode
            
            if  @@error<>0
            begin
              rollback tran
              set @po_status = 400
              set @po_RetValue='删除失败'
            end
            else
            begin
              commit tran
              set @po_status = 103
              set @po_RetValue='删除成功'
            end
          
    end

    if @@error <> 0
    begin
     set @po_Status = 900
     set @po_RetValue = '数据执行失败'
    end

    6.其他注意点:
    a.主从表查询存储过程,注意新建视图,查询视图
    b.修改时,详细页需要取附表的值,必须新增一个附表的Edit数据集,用来循环取值

  • 相关阅读:
    20、职责链模式
    19、命令模式
    18、桥接模式
    17、单例模式
    javascript移动端实现企业图谱总结
    前端用js模拟疫情扩散开发总结
    移动端企业图谱开发兼容性等问题踩坑
    js实现企业图谱(pc端企业图谱项目总结与踩坑分享)
    基于vue脚手架的项目打包上线(发布)方法和误区
    实现一个网页版的聊天室(类似于钉钉群)
  • 原文地址:https://www.cnblogs.com/howie/p/4999674.html
Copyright © 2011-2022 走看看