显示顺序排序(上或下)- ShowSeqUpOrDown

2017-02-21 23:10:14  访问(1943) 赞(0) 踩(0)


        /// <summary>
        /// 显示顺序排序(上或下)- ShowSeqUpOrDown
        /// </summary>
        /// <param name="oId"></param>
        /// <param name="isUp"></param>
        /// <param name="xdbHelper"></param>
        public void ShowSeqUpOrDown(object oId, bool isUp, DBHelper xdbHelper)
        {

            bool bIsCreate = true;

            if (xdbHelper == null)
            {
                xdbHelper = SlowX.DAL.Helpers.DBHelper.CreateDBHelper();
            }
            else
            {
                // 没有打开链接 //
                bIsCreate = xdbHelper.IsNotOpen();
            }

            try
            {
                if (bIsCreate)
                    xdbHelper.OpenDBHelper();

                DataRow dr = GetDataRowById(oId, xdbHelper);

                int curShowSeq = int.Parse(dr[DataColumnNameSlowXCoreCommon.ShowSeq].ToString());
                int newShowSeq = 0;

                if (isUp)
                {
                    if (curShowSeq <= 1)
                    {
                        if (bIsCreate)
                            xdbHelper.EndDBHelper();

                        return;
                    }
                    newShowSeq = curShowSeq - 1;
                }
                else
                {
                    newShowSeq = curShowSeq + 1;
                }

                BaseEntity entity = CreateBaseEntity();
                IQueryDriver iq = entity;
                ISaveDriver isave = entity;

                iq.ClearAllIQueryItem();


                iq.AddIQueryItemWithEntityFieldInfo
                    (
                        entity.GetIDEntityFieldInfo(),
                        Enums.SqlLink.EmSqlLink.NotEqual,
                        oId
                    );

                EntityFieldInfo infoShowSeq
                    =
                    entity.GetExistEntityFieldInfo
                        (
                            DataColumnNameSlowXCoreCommon.ShowSeq
                        );

                SaveAssist saveAssistValue = new SaveAssist();

                // 向上 //
                if (curShowSeq > newShowSeq)
                {


                    // update tableName set showseq = showseq + 1 where ShowSeq < curShowSeq and ShowSeq >= newShowSeq;

                    saveAssistValue.rightAddBaseSqlFunction
                        (
                            new MathSqlFunction(Enums.SqlMath.EmSqlMath.加, 1)
                        );

                    isave.AddISaveItem
                        (
                            infoShowSeq,
                            saveAssistValue,
                            infoShowSeq
                        );


                    iq.AddIQueryItemWithEntityFieldInfo
                        (
                            infoShowSeq,
                            Enums.SqlLink.EmSqlLink.Less,
                            curShowSeq
                        );

                    iq.AddIQueryItemWithEntityFieldInfo
                        (
                            infoShowSeq,
                            Enums.SqlLink.EmSqlLink.GreaterEqual,
                            newShowSeq
                        );

                }
                else
                {
                    // update tableName set showseq = showseq - 1 where ShowSeq <= newShowSeq and ShowSeq > curShowSeq;

                    saveAssistValue.rightAddBaseSqlFunction
                        (
                            new MathSqlFunction(Enums.SqlMath.EmSqlMath.减, 1)
                        );

                    isave.AddISaveItem
                        (
                            infoShowSeq,
                            saveAssistValue,
                            infoShowSeq
                        );

                    iq.AddIQueryItemWithEntityFieldInfo
                        (
                            infoShowSeq,
                            Enums.SqlLink.EmSqlLink.Greater,
                            curShowSeq
                        );

                    iq.AddIQueryItemWithEntityFieldInfo
                        (
                            infoShowSeq,
                            Enums.SqlLink.EmSqlLink.LessEqual,
                            newShowSeq
                        );
                }

                _Update
                    (
                        SlowX.Core.Enums.ClearCache.EmClearCache.不清空,
                        entity,
                        xdbHelper
                    );

                iq.ClearAllIQueryItem();
                isave.ClearAllISaveItem();

                iq.AddIQueryItemWithEntityFieldInfo
                    (
                        entity.GetIDEntityFieldInfo(),
                        Enums.SqlLink.EmSqlLink.Equal,
                        oId
                    );

                isave.AddISaveItem(infoShowSeq, newShowSeq);

                _Update
                    (
                        SlowX.Core.Enums.ClearCache.EmClearCache.清空,
                        entity,
                        xdbHelper
                    );




                if (bIsCreate)
                    xdbHelper.EndDBHelper();

            }
            catch (Exception err)
            {
                if (bIsCreate)
                    xdbHelper.TranDBHelper();

                throw err;
            }
            finally
            {
                if (bIsCreate)
                    xdbHelper.FinallyDBHelper();
            }
        }


标签:显示顺序排序(上或下)- ShowSeqUpOrDown 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)