コード例 #1
0
        private static void BindEvent(RepositoryItemSearchLookUpEdit properties, string displayMember, string valueMember, int pageIndex, int pageSize, DbFrom dbFrom, kkCondition defaultCondition, Func <string, kkCondition> GetFilterCondition)
        {
            if (dbFrom == null)
            {
                return;
            }
            int       originPageIndex = pageIndex;
            int       count;
            DataTable dataContainer = new DataTable();

            dbFrom.TopDbFrom().Condition = defaultCondition;
            dataContainer.AddRange(bll.GetListByPager(dbFrom, pageIndex, pageSize, out count));
            properties.DisplayMember = displayMember;
            properties.ValueMember   = valueMember;
            properties.DataSource    = dataContainer;
            var gv = properties.View;

            if (dataContainer.Rows.Count < count)
            {
                gv.ColumnFilterChanged += (sender, e) =>
                {
                    pageIndex = 1;
                    dataContainer.Clear();
                    string filterText = gv.FindFilterText;
                    if (string.IsNullOrEmpty(filterText))
                    {
                        dataContainer.AddRange(bll.GetListByPager(dbFrom, originPageIndex, pageSize, out count));
                    }
                    else
                    {
                        kkCondition filterCondition  = GetFilterCondition(filterText);
                        dbFrom.TopDbFrom().Condition = filterCondition;
                        dataContainer.AddRange(bll.GetListByPager(dbFrom, pageIndex, pageSize, out count));
                    }
                    gv.RefreshData();
                    gv.ApplyFindFilter(filterText);
                };
                gv.TopRowChanged += (sender, e) =>
                {
                    string      filterText       = gv.FindFilterText;
                    kkCondition condition        = string.IsNullOrWhiteSpace(filterText) ? defaultCondition : GetFilterCondition(filterText);
                    dbFrom.TopDbFrom().Condition = condition;
                    int pageCount = (count + pageSize - 1) / pageSize;
                    if (gv.IsRowVisible(gv.DataRowCount - 1) == RowVisibleState.Visible && pageIndex < pageCount)
                    {
                        pageIndex++;
                        dataContainer.AddRange(bll.GetListByPager(dbFrom, pageIndex, pageSize, out count));
                        gv.RefreshData();
                        gv.ApplyFindFilter(filterText);
                    }
                };
            }
        }
コード例 #2
0
        /// <summary>
        /// 获取过滤条件
        /// </summary>
        /// <param name="gv"></param>
        /// <param name="filterText"></param>
        /// <returns></returns>
        private static kkCondition GetFileterCondition(GridView gv, string filterText)
        {
            kkCondition condition = new kkCondition();
            bool        flag      = true;

            foreach (GridColumn col in gv.Columns)
            {
                if (col.Visible)
                {
                    if (flag)
                    {
                        flag = false;
                        condition.AndLeftParenthesis();
                    }
                    condition.OrLike(col.FieldName, filterText);
                }
            }
            if (condition.ConditionFields.Count > 0)
            {
                condition.RightParenthesis();
            }
            return(condition);
        }
コード例 #3
0
 public static void BindData(this RepositoryItemSearchLookUpEdit repositoryItemSearchLookUpEdit, string displayMember, string valueMember, int pageIndex, int pageSize, DbFrom dbFrom, kkCondition defaultCondition, Func <string, kkCondition> filterCondition)
 {
     BindEvent(repositoryItemSearchLookUpEdit, displayMember, valueMember, pageIndex, pageSize, dbFrom, defaultCondition, filterCondition);
 }
コード例 #4
0
 public static void BindData(this SearchLookUpEdit searchLookUpEdit, string displayMember, string valueMember, int pageIndex, int pageSize, DbFrom dbFrom, kkCondition defaultCondition, Func <string, kkCondition> filterCondition)
 {
     BindEvent(searchLookUpEdit.Properties, displayMember, valueMember, pageIndex, pageSize, dbFrom, defaultCondition, filterCondition);
 }