Beispiel #1
0
        public void SetFilterComm(Object condition)
        {
            if (condition != null)
            {
                #region
                var dataGridData = this;



                #region

                ItemsSourceView.Filter = new Predicate <object>((obj) =>
                {
                    bool isFilter = true;

                    foreach (FilterProperty pinfo in ComparePropertyList) //循环筛选出来需要比较的属性
                    {
                        string columnNameEn = pinfo.PropertyName;
                        var filterValue     = pinfo.PropertyValue;//过滤的值
                        string columnType   = pinfo.PropertyInfo.PropertyType.ToString().Replace("System.Nullable`1[", "").Replace("]", "").Replace("System.", "").ToLower();


                        if (filterValue != null)
                        {
                            #region 重点内容 这里开始执行真正的比较

                            object rowValue = ToolFunction.GetPropertyValue(obj, pinfo.PropertyInfo);//数据行的值

                            if (rowValue == null)
                            {
                                if (filterValue.ToString() == "")
                                {
                                    return(true);
                                }
                                else
                                {
                                    return(false);
                                }
                            }
                            else
                            {
                                isFilter = CompareValue(columnType, rowValue, filterValue, pinfo.ConditionStr);
                            }
                            #endregion
                        }
                        if (!isFilter)
                        {
                            return(isFilter);
                        }
                    }

                    return(isFilter);
                });


                #endregion

                #endregion
            }
        }