【DataTable】客户端DataTable 数据获取并转化为Data List作为参数传入服务端(基于MQ通信)...

DataTable取值:dt[i][j] //第i行第j列

   private bool UpdateDataList()//GCM Data
        {
            if (gdcData.DataSource == null)//无数据,直接返回true,避免调用时return,不给保存成功的提示
            {
                return true;
            }
            TRSNode out_node = new TRSNode("CMN_OUT");
            DataTable dtDataEdited = null;
            try
            {
                //New record, 使用UPDATE方法
                dtDataEdited = ((DataTable)gdcData.DataSource).GetChanges(DataRowState.Added);//①得到所有新增的行            //gdcData->gridControl
                if (dtDataEdited != null)
                {
                    TRSNode in_node = FillUpdateRecords(dtDataEdited, false);
                    in_node.ProcStep = GlobalConstant.SYS_STEP_UPDATE;

                    if (CommonRoutine.CallService("BAS", "BAS_Update_Data_List", in_node, ref out_node) == false)
                    {
                        return false;
                    }
                }

                //Modify record
                //因更改GCM表记录时,有可能会把主键也更新掉,所以没办法做UPDATE操作,只能先删后加
                //Server端也仅支持INSERT和DELETE,GlobalConstant.SYS_STEP_UPDATE直接转化为INSERT
                dtDataEdited = null;
                dtDataEdited = ((DataTable)gdcData.DataSource).GetChanges(DataRowState.Modified);//得到所有修改过的行
                if (dtDataEdited != null)
                {
                    TRSNode in_node = FillUpdateRecords(dtDataEdited, true);
                    in_node.ProcStep = GlobalConstant.SYS_STEP_DELETE;

                    if (CommonRoutine.CallService("BAS", "BAS_Update_Data_List", in_node, ref out_node) == false)
                    {
                        return false;
                    }

                    in_node = FillUpdateRecords(dtDataEdited, false);
                    in_node.ProcStep = GlobalConstant.SYS_STEP_UPDATE;

                    if (CommonRoutine.CallService("BAS", "BAS_Update_Data_List", in_node, ref out_node) == false)
                    {
                        return false;
                    }
                }

                //Deleted record
                dtDataEdited = null;
                dtDataEdited = ((DataTable)gdcData.DataSource).GetChanges(DataRowState.Deleted);//得到所有删除的行
                if (dtDataEdited != null)
                {
                    TRSNode in_node = FillUpdateRecords(dtDataEdited, true);
                    in_node.ProcStep = GlobalConstant.SYS_STEP_DELETE;

                    if (CommonRoutine.CallService("BAS", "BAS_Update_Data_List", in_node, ref out_node) == false)
                    {
                        return false;
                    }
                }

                //CommonRoutine.ShowSuccessMsg(out_node);
            }
            catch (Exception ex)
            {
                CommonFunction.ShowMsgBox(ex.Message);
                return false;
            }
            return true;
        }

根据DataRawStatus获取DataTable中的数据时,操作是修改,接收的判断是Added(默认新增),原因:数据查询绑定时的业务方法中少了dtResult.AcceptChanges();//缺少这句默认DataRawStatus为Added

   public static DataTable ViewQcmCoaTemplate(string sCoaId)
        {
            try
            {
                DataTable dtResult = new DataTable();
                ArrayList a_list = new ArrayList();

                TRSNode in_node = new TRSNode("IN");
                TRSNode out_node;
                dtResult.Columns.Add("ITEM_SEQ");
                dtResult.Columns.Add("TESTING_ITEM");
                dtResult.Columns.Add("TESTING_SPECIFICATION");
                dtResult.Columns.Add("DIMENS");
                dtResult.Columns.Add("TESTING_METHOD");
                //dtResult.Columns.Add("ITEM_SEQ");
                //dtResult.Columns.Add("CREATE_USER_ID");
                //dtResult.Columns.Add("CREATE_TIME");
                //dtResult.Columns.Add("UPDATE_USER_ID");
                //dtResult.Columns.Add("UPDATE_TIME");
                CommonRoutine.SetInMsg(in_node);

                in_node.ProcStep = '1';
                string sExtFactory = "15车间";
                if (sExtFactory != "")
                {
                    in_node.Factory=sExtFactory;
                }
                if (sCoaId != "")
                {
                    in_node.AddString("NEXT_COA_ID", sCoaId);
                }
                

                do
                {
                    out_node = new TRSNode("OUT");

                    if (CommonRoutine.CallService("QCM", "QCM_View_COA_Template", in_node, ref out_node) == false)
                    {
                        return null;
                    }

                    a_list.Add(out_node);
                    //dtResult.Columns.Add("LOT_ID");
                    //dtResult.Columns.Add("TRAN_DATE");
                    //dtResult.Columns.Add("DESCRIPTION");
                    in_node.SetString("NEXT_ITEM_ID", out_node.GetString("NEXT_ITEM_ID"));//ToDo: 服务器端NEXT_ITEM_ID查询未实现

                } while (in_node.GetString("NEXT_ITEM_ID") != "");

                foreach (object obj in a_list)
                {
                    out_node = null;
                    out_node = (TRSNode)obj;

                    for (int i = 0; i < out_node.GetList(0).Count; i++)
                    {
                        dtResult.Rows.Add(
                            out_node.GetList(0)[i].GetInt("ITEM_SEQ"),
                            out_node.GetList(0)[i].GetString("TESTING_ITEM"),
                            out_node.GetList(0)[i].GetString("TESTING_SPECIFICATION"),
                            out_node.GetList(0)[i].GetString("DIMENS"),
                            out_node.GetList(0)[i].GetString("TESTING_METHOD")
                            //out_node.GetList(0)[i].GetInt("ITEM_SEQ")
                            //out_node.GetList(0)[i].GetString("CREATE_USER_ID"),
                            //out_node.GetList(0)[i].GetString("CREATE_TIME"),
                            //out_node.GetList(0)[i].GetString("UPDATE_USER_ID"),
                            //out_node.GetList(0)[i].GetString("UPDATE_TIME")
                            );

                    }
                }

                dtResult.AcceptChanges();//缺少这句默认DataRawStatus为Added
                return dtResult;
            }
            catch (Exception ex)
            {
                CommonFunction.ShowMsgBox(ex.Message);
                return null;
            }
        }

 

======================================

 private TRSNode FillUpdateRecords(DataTable dtDataEdited, bool bOriginal)
        {
            TRSNode node;
            TRSNode in_node = new TRSNode("UPDATE_DATA_LIST_IN");
            CommonRoutine.SetInMsg(in_node);

            for (int i = 0; i < dtDataEdited.Rows.Count; i++)
            {
                node = in_node.AddNode("COA_LIST");
                if (bOriginal)
                {
                    node.AddString("ITEM_SEQ", dtDataEdited.Rows[i]["ITEM_SEQ", DataRowVersion.Original]);
                    node.AddString("TESTING_IETM", dtDataEdited.Rows[i]["TESTING_IETM", DataRowVersion.Original]);
                    node.AddString("TESTING_SPECIFICATION", dtDataEdited.Rows[i]["TESTING_SPECIFICATION", DataRowVersion.Original]);
                    node.AddString("DIMENS", dtDataEdited.Rows[i]["DIMENS", DataRowVersion.Original]);
                    node.AddString("TESTING_METHOD", dtDataEdited.Rows[i]["TESTING_METHOD", DataRowVersion.Original]);
                }
                else
                {
                    node.AddString("ITEM_SEQ", dtDataEdited.Rows[i]["ITEM_SEQ"]);//根据i行及列名获取值并存入node中
                    node.AddString("TESTING_ITEM", dtDataEdited.Rows[i]["TESTING_ITEM"]);
                    node.AddString("TESTING_SPECIFICATION", dtDataEdited.Rows[i]["TESTING_SPECIFICATION"]);
                    node.AddString("DIMENS", dtDataEdited.Rows[i]["DIMENS"]);
                    node.AddString("TESTING_METHOD", dtDataEdited.Rows[i]["TESTING_METHOD"]);
                }
            }
            return in_node;
        }

=========================

 

  protected override void ExecSaveEvent()
        {
            //Create
            try
            {
                //保存编辑框中做的更新
                gdvItem.PostEditor();
                gdvItem.UpdateCurrentRow();
                if (saTableKeys == null)//新建
                {
                    //Update Table
                    if (CheckCondition("Create_COA_Template", GlobalConstant.SYS_STEP_CREATE) == false)
                    {
                        return;
                    }
                    if (Update_COA_Template(GlobalConstant.SYS_STEP_CREATE) == false)
                    {
                        return;
                    }
                    //添加成功,显示成编辑界面
                    saTableKeys = new string[] { GlobalVariable.gsFactory, this.txtCoaTempId.Text };
                    this.rpgCreate.Visible = true;
                    this.rpgLifeCycle.Visible = true;
                    this.Text = CommonFunction.FindLanguage("COA Template", CAPTION_TYPE.MENU) + " - " + this.txtCoaTempId.Text;
                    //if (GlobalVariable.gLoginInfo.bListAutoRefresh == true)
                    //{
                    //    btnRefresh.PerformClick();
                    //}
                }
                else//更新
                {
                    if (CheckCondition("Create_COA_Template", GlobalConstant.SYS_STEP_UPDATE) == false)
                    {
                        return;
                    }
                    if (Update_COA_Template(GlobalConstant.SYS_STEP_UPDATE) == false)
                    {
                        return;
                    }
                    //if (GlobalVariable.gLoginInfo.bListAutoRefresh == true)
                    //{
                    //    btnRefresh.PerformClick();
                    //}
                }
               // View_COA_Template();
                //Update Data List
                //int ActiveRow = 0;//更新后继续focus在原先focus的行
                if (CheckCondition("Update_Item_List", GlobalConstant.SYS_STEP_CREATE) == false) //CheckDataCondition不分SYS_STEP_UPDATE还是SYS_STEP_DELETE
                {
                    return;
                }
                if (Update_COA_Template_Item_List() == false)
                {
                    return;
                }
                View_COA_Template();
                CommonFunction.ShowMsgBox(CommonFunction.GetMessage(358));
            }
            catch (Exception ex)
            {
                CommonFunction.ShowMsgBox(ex.Message);
            }
        }
        

 

转载于:https://my.oschina.net/8824/blog/3080706

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值