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); }
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); }
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); } }; } }