/// <summary>
        /// 加载方案项目
        /// </summary>
        /// <param name="FaItem">方案项目</param>
        public void LoadFA(CLDC_DataCore.Model.Plan.Plan_ConnProtocolCheck FaItem)
        {
            Dgv_Data.Rows.Clear();

            base.FaName = FaItem.Name;

            for (int _i = 0; _i < FaItem.Count; _i++)                      //循环方案对象
            {
                StPlan_ConnProtocol _Item = FaItem.getConnProtocolPrj(_i); //取出一个方案项目
                string zouziShortDecript  = string.Empty;
                int    RowIndex           = Dgv_Data.Rows.Add();
                Dgv_Data.Rows[RowIndex].Cells[0].Value = _i + 1;
                ((DataGridViewComboBoxCell)Dgv_Data.Rows[RowIndex].Cells[1]).Value = _Item.ConnProtocolItem.ToString(); //数据项名称
                ((DataGridViewCell)Dgv_Data.Rows[RowIndex].Cells[2]).Value         = _Item.ItemCode;                    //标识编码
                ((DataGridViewCell)Dgv_Data.Rows[RowIndex].Cells[3]).Value         = _Item.DataLen.ToString();          //数据长度
                ((DataGridViewCell)Dgv_Data.Rows[RowIndex].Cells[4]).Value         = _Item.PointIndex.ToString();       //小数位索引
                ((DataGridViewCell)Dgv_Data.Rows[RowIndex].Cells[5]).Value         = _Item.StrDataType;                 //数据格式
                ((DataGridViewComboBoxCell)Dgv_Data.Rows[RowIndex].Cells[6]).Value = _Item.OperType.ToString();         //操作类型,读/写
                ((DataGridViewCell)Dgv_Data.Rows[RowIndex].Cells[7]).Value         = _Item.WriteContent;                //写入内容
                Dgv_Data.Rows[RowIndex].Cells[Dgv_Data.Columns.Count - 1].Value    = "删除";                              //删除按钮
                Dgv_Data[Dgv_Data.Columns.Count - 1, RowIndex].Style.ForeColor     = Color.Red;                         //删除按钮为红色
            }

            {
                int RowIndex = Dgv_Data.Rows.Add();                 //最后增加一个空行,用于新增
                Dgv_Data.Rows[RowIndex].Cells[Dgv_Data.Columns.Count - 1].Value           = CONST_ADD;
                Dgv_Data.Rows[RowIndex].Cells[Dgv_Data.Columns.Count - 1].Style.ForeColor = Color.Blue;
            }
            this.UpDownButtonState(0);    //设置上下移动按钮状态
        }
        /// <summary>
        /// 加载方案
        /// </summary>
        private bool  Load()
        {
            _LstConnProtocol = new List <StPlan_ConnProtocol>();
            string  _ErrorString = "";
            XmlNode _XmlNode     = clsXmlControl.LoadXml(_FAPath, out _ErrorString);

            if (_ErrorString != "")
            {
                return(false);
            }
            try
            {
                for (int _i = 0; _i < _XmlNode.ChildNodes.Count; _i++)
                {
                    StPlan_ConnProtocol _Item = new StPlan_ConnProtocol();
                    _Item.PrjID            = _XmlNode.ChildNodes[_i].Attributes["PrjID"].Value;                                       //项目ID
                    _Item.ConnProtocolItem = _XmlNode.ChildNodes[_i].Attributes["ConnProtocolItem"].Value.Trim();                     //数据项名称
                    _Item.ItemCode         = _XmlNode.ChildNodes[_i].Attributes["ItemCode"].Value.Trim();                             //标识编码
                    _Item.DataLen          = int.Parse(_XmlNode.ChildNodes[_i].Attributes["DataLen"].Value.Trim());                   //数据长度
                    _Item.PointIndex       = int.Parse(_XmlNode.ChildNodes[_i].Attributes["PointIndex"].Value.Trim());                //小数位索引
                    _Item.StrDataType      = _XmlNode.ChildNodes[_i].Attributes["StrDataType"].Value;                                 //数据格式
                    _Item.OperType         = (StMeterOperType)int.Parse(_XmlNode.ChildNodes[_i].Attributes["OperType"].Value.Trim()); //操作类型,读/写
                    _Item.WriteContent     = _XmlNode.ChildNodes[_i].Attributes["WriteContent"].Value.Trim();                         //写入内容
                    _LstConnProtocol.Add(_Item);
                }
                return(true);
            }
            catch (Exception ex)
            {
                CLDC_DataCore.Function.ErrorLog.Write(ex);
                return(false);
            }
        }
        /// <summary>
        /// 增加一个项目
        /// </summary>
        /// <param name="connProtocolItem"></param>
        /// <param name="itemcode"></param>
        /// <param name="datalen"></param>
        /// <param name="pointindex"></param>
        /// <param name="datatype"></param>
        /// <param name="opertype"></param>
        /// <param name="writecontent"></param>
        /// <returns></returns>
        public bool Add(string connProtocolItem
                        , string itemcode
                        , string datalen
                        , string pointindex
                        , string datatype
                        , string opertype
                        , string writecontent)
        {
            StPlan_ConnProtocol _Item = new StPlan_ConnProtocol();
            string strProtocolNo      = itemcode;//_csDataFlag.GetDataFlagNo(connProtocolItem).ToString().PadLeft(2, '0');

            _Item.PrjID            = ((int)CLDC_Comm.Enum.Cus_MeterResultPrjID.通讯协议检查试验).ToString() + strProtocolNo + ((int)GetMeterOperType(opertype)).ToString();
            _Item.ConnProtocolItem = connProtocolItem;
            _Item.ItemCode         = itemcode;
            _Item.DataLen          = int.Parse(datalen);
            _Item.PointIndex       = int.Parse(pointindex);
            _Item.StrDataType      = datatype;
            _Item.OperType         = GetMeterOperType(opertype);
            _Item.WriteContent     = writecontent;
            if (_LstConnProtocol.Contains(_Item))
            {
                return(false);
            }
            _LstConnProtocol.Add(_Item);
            return(true);
        }
 /// <summary>
 /// 移动项目
 /// </summary>
 /// <param name="i">需要移动到的列表位置</param>
 /// <param name="Item">项目结构体</param>
 public void Move(int i, StPlan_ConnProtocol Item)
 {
     i = i < 0 ? 0 : i;
     i = i >= _LstConnProtocol.Count ? _LstConnProtocol.Count - 1 : i;
     this.Remove(Item);
     _LstConnProtocol.Insert(i, Item);
     return;
 }
 /// <summary>
 /// 根据项目移除
 /// </summary>
 /// <param name="Item">项目结构体</param>
 public void Remove(StPlan_ConnProtocol Item)
 {
     if (!_LstConnProtocol.Contains(Item))
     {
         return;
     }
     _LstConnProtocol.Remove(Item);
     return;
 }
        /// <summary>
        /// 保存方案到XML文档
        /// </summary>
        public void Save()
        {
            if (System.IO.File.Exists(_FAPath))
            {
                System.IO.File.Delete(_FAPath);
            }
            if (_LstConnProtocol.Count == 0)
            {
                return;
            }
            clsXmlControl _XmlNode = new clsXmlControl();

            _XmlNode.appendchild("", "ConnProtocol", "Name", Name);
            for (int _i = 0; _i < _LstConnProtocol.Count; _i++)
            {
                StPlan_ConnProtocol _Item      = _LstConnProtocol[_i];
                XmlNode             _ChildNode = _XmlNode.appendchild(true
                                                                      , "R"
                                                                      , "PrjID"
                                                                      , _Item.PrjID
                                                                      , "ConnProtocolItem"
                                                                      , _Item.ConnProtocolItem
                                                                      , "ItemCode"
                                                                      , _Item.ItemCode
                                                                      , "DataLen"
                                                                      , _Item.DataLen.ToString()
                                                                      , "PointIndex"
                                                                      , _Item.PointIndex.ToString()
                                                                      , "StrDataType"
                                                                      , _Item.StrDataType
                                                                      , "OperType"
                                                                      , ((int)_Item.OperType).ToString()
                                                                      , "WriteContent"
                                                                      , _Item.WriteContent);
            }
            _XmlNode.SaveXml(_FAPath);
            return;
        }