Exemplo n.º 1
0
        /// <summary>
        /// 将医嘱从老位置移动到新位置
        /// </summary>
        /// <param name="oldIndex"></param>
        /// <param name="newIndex"></param>
        internal void MoveOrder(int oldIndex, int newIndex)
        {
            if ((oldIndex < 0) || (oldIndex >= Orders.Count))
            {
                throw new ArgumentOutOfRangeException(ConstMessages.ExceptionOrginalOrderNotFind);
            }
            if ((newIndex < -1) || (newIndex > Orders.Count))
            {
                throw new ArgumentOutOfRangeException(ConstMessages.ExceptionOutOfListRange);
            }

            if (oldIndex == newIndex)
            {
                return;
            }
            // 移动的方法是先从原列表中移除记录,然后插入到新位置
            // 向下移动时,检查新位置是否是草药汇总信息,如果是的话,则要跳过,以保证草药明细和汇总信息在一起
            if (oldIndex < newIndex)
            {
                TextOrderContent textContent = Orders[newIndex].Content as TextOrderContent;
                if ((textContent != null) && (textContent.IsSummaryOfHerbDetail))
                {
                    newIndex++;
                }
            }
            Order temp = Orders[oldIndex];

            m_IsEditing = true;
            Orders.OrderList.Remove(temp);
            if (newIndex >= Orders.Count) // 在列表末尾插入
            {
                AddOrder(temp);
            }
            else
            {
                Orders.OrderList.Insert(newIndex, temp);
            }
            temp.HadSync = false;
            m_IsEditing  = false;
            FireListChanged(new ListChangedEventArgs(ListChangedType.ItemMoved, newIndex, oldIndex));
        }
Exemplo n.º 2
0
        /// <summary>
        /// 展开指定位置医嘱关联的草药明细
        /// </summary>
        /// <param name="index"></param>
        public void ExpandHerbDetail(int index)
        {
            // 应该在索引范围内
            if ((index < 0) || (index >= Count))
            {
                throw new IndexOutOfRangeException();
            }

            TextOrderContent textContent = this[index].OrderCache.Content as TextOrderContent;

            // 应该是草药的汇总信息
            // 将关联序号插入可显示的列表,重新生成list
            if ((textContent != null) && (textContent.IsSummaryOfHerbDetail))
            {
                if (!m_GroupSerialNoOfExpandedHerbs.Contains(textContent.GroupSerialNoOfLinkedHerbs))
                {
                    m_GroupSerialNoOfExpandedHerbs.Add(textContent.GroupSerialNoOfLinkedHerbs);
                }
                FireViewListChanged(new ListChangedEventArgs(ListChangedType.Reset, -1));
            }
        }