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