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);
}
}