Ejemplo n.º 1
0
            public override global::System.Data.DataTable Clone()
            {
                OrderDataTable cln = ((OrderDataTable)(base.Clone()));

                cln.InitVars();
                return(cln);
            }
Ejemplo n.º 2
0
            public override DataTable Clone()
            {
                OrderDataTable cln = ((OrderDataTable)(base.Clone()));

                cln.InitVars();
                return(cln);
            }
Ejemplo n.º 3
0
        /// <summary>
        /// 在医嘱的DataTable中找到指定医嘱对象对应的行,并返回
        /// </summary>
        /// <param name="order"></param>
        /// <returns>医嘱所在行,不存在则返回null</returns>
        public DataRow GetOrderRow(Order order)
        {
            if (order == null)
            {
                throw new ArgumentNullException();
            }

            if ((order.EditState == OrderEditState.Added) ||
                (order.EditState == OrderEditState.Detached))
            {
                return(null);
            }

            // 通过医嘱序号来定位
            DataRow[] rows = OrderDataTable.Select(String.Format(CultureInfo.CurrentCulture
                                                                 , "{0} = {1}"
                                                                 , CoreBusinessLogic.GetSerialNoField(IsTempOrder)
                                                                 , order.SerialNo));
            if (rows.Length == 1)
            {
                return(rows[0]);
            }
            else if (rows.Length > 1)
            {
                throw new ArgumentException(ConstMessages.ExceptionHaveManyMatchRows);
            }
            else
            {
                throw new ArgumentOutOfRangeException();
            }
        }
Ejemplo n.º 4
0
 internal void InitVars()
 {
     this.tableOrder = ((OrderDataTable)(this.Tables["Order"]));
     if ((this.tableOrder != null))
     {
         this.tableOrder.InitVars();
     }
 }
Ejemplo n.º 5
0
 private void InitClass()
 {
     this.DataSetName             = "ReportOrder";
     this.Prefix                  = "";
     this.Namespace               = "http://tempuri.org/ReportOrder.xsd";
     this.EnforceConstraints      = true;
     this.SchemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema;
     this.tableOrder              = new OrderDataTable();
     base.Tables.Add(this.tableOrder);
 }
Ejemplo n.º 6
0
 private void InitClass()
 {
     this.DataSetName        = "OrderBook";
     this.Prefix             = "";
     this.Namespace          = "http://tempuri.org/OrderBook.xsd";
     this.Locale             = new System.Globalization.CultureInfo("en-US");
     this.CaseSensitive      = false;
     this.EnforceConstraints = true;
     this.tableOrder         = new OrderDataTable();
     this.Tables.Add(this.tableOrder);
 }
Ejemplo n.º 7
0
 internal void InitVars(bool initTable)
 {
     this.tableOrder = ((OrderDataTable)(base.Tables["Order"]));
     if ((initTable == true))
     {
         if ((this.tableOrder != null))
         {
             this.tableOrder.InitVars();
         }
     }
 }
Ejemplo n.º 8
0
        /// <summary>
        /// 接受自上次保存以来的修改
        /// </summary>
        public void AcceptChanges()
        {
            m_IsEditing = true;
            for (int index = Orders.Count - 1; index >= 0; index--)
            {
                if ((Orders[index].EditState == OrderEditState.Deleted) ||
                    (Orders[index].EditState == OrderEditState.Detached))
                {
                    Orders.RemoveAt(index);
                }
                else
                {
                    Orders[index].AcceptChanges();
                }
            }
            OrderDataTable.AcceptChanges();

            m_IsEditing = false;
            m_RemovedCollection.Clear();
            _hadChanged = false;
        }
Ejemplo n.º 9
0
 internal OrderRow(DataRowBuilder rb) :
     base(rb)
 {
     this.tableOrder = ((OrderDataTable)(this.Table));
 }
Ejemplo n.º 10
0
 public static void UpdateOrders()
 {
     заказыTableAdapter.Adapter.Update(OrderDataTable);
     OrderDataTable.AcceptChanges();
 }
Ejemplo n.º 11
0
 internal OrderRow(global::System.Data.DataRowBuilder rb) :
     base(rb)
 {
     this.tableOrder = ((OrderDataTable)(this.Table));
 }
Ejemplo n.º 12
0
        /// <summary>
        /// 同步医嘱对象集合和DataTable的数据
        /// </summary>
        /// <param name="changedOrders"></param>
        /// <param name="autoDeleteNewOrder">是否主动删除所有新增状态的医嘱</param>
        /// <returns>返回DataTable的更新内容</returns>
        public DataTable SyncObjectData2Table(Order[] changedOrders, bool autoDeleteNewOrder)
        {
            // 新增和修改过的医嘱,统一将更新标志设为0

            // 首先同步修改过的医嘱,取出新医嘱稍后处理
            StringBuilder      deletedSerialNos = new StringBuilder("0, ");
            Collection <Order> newOrders        = new Collection <Order>();

            if ((changedOrders != null) && (changedOrders.Length > 0))
            {
                DataRow row;
                foreach (Order order in changedOrders)
                {
                    if (order.EditState == OrderEditState.Deleted)
                    {
                        deletedSerialNos.Append(order.SerialNo.ToString() + ",");
                    }
                    else if (order.State == OrderState.New)
                    {
                        newOrders.Add(order);
                    }
                    else
                    {
                        row = GetOrderRow(order);
                        PersistentObjectFactory.SetDataRowValueFromObject(row, order);
                        row[ConstSchemaNames.OrderColSynchFlag] = 0;
                    }
                }
            }
            deletedSerialNos.Append("0");

            // 如果自动删除新医嘱,则将DataTable中的新医嘱全部删除, 否则只删除标记为删除的医嘱
            string filter;

            if (autoDeleteNewOrder)
            {
                filter = String.Format(CultureInfo.CurrentCulture, "{1} = {0:D}", OrderState.New, ConstSchemaNames.OrderColState);
            }
            else
            {
                filter = String.Format(CultureInfo.CurrentCulture, "{0} in ({1})"
                                       , CoreBusinessLogic.GetSerialNoField(IsTempOrder), deletedSerialNos.ToString());
            }
            DataRow[] deletedRow = OrderDataTable.Select(filter);
            if (deletedRow != null)
            {
                foreach (DataRow row in deletedRow)
                {
                    row.Delete();
                }
            }

            foreach (Order order in newOrders) // 插入新医嘱
            {
                DataRow row;
                decimal groupSerialNo;

                groupSerialNo       = order.GroupSerialNo;// 新医嘱的分组序号通过触发器来更新,在这里先将其分组序号与分组标志设为一致
                order.GroupSerialNo = (int)order.GroupPosFlag;
                row = OrderDataTable.NewRow();
                PersistentObjectFactory.SetDataRowValueFromObject(row, order);
                row[ConstSchemaNames.OrderColSynchFlag] = 0;
                OrderDataTable.Rows.Add(row);
                order.GroupSerialNo = groupSerialNo; // 恢复原先的分组序号
            }

            DataTable changedTable = OrderDataTable.GetChanges();

            if ((changedTable != null) && (changedTable.Rows.Count > 0))
            {
                return(changedTable.Copy());
            }
            else
            {
                return(null);
            }
        }