예제 #1
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);
 }
예제 #2
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);
 }
예제 #3
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);
                    }
                };
            }
        }