Пример #1
0
 private void AppendHeader(PFGridMultiHeader p, StoreColumn a, bool generateColumn = true)
 {
     if (a.Children.Any())
     {
         var h = new PFGridMultiHeader(a.title);
         a.Children.ForEach(b =>
         {
             AppendHeader(h, b, generateColumn);
         });
         //h.AddChildren(a.Children.Select(b => new PFGridColumn(b)).ToArray());
         p.AddChildren(h);
     }
     else
     {
         var c = new PFGridColumn(a);
         if (generateColumn)
         {
             _columns.Add(c);
         }
         p.AddChildren(c);
     }
     //cs.ForEach(a => {
     //    var c = new PFGridColumn(a);
     //    p..Add(c);
     //    if (a.Children.Any())
     //    {
     //        AppendChildColumn(c, a.Children);
     //    }
     //});
 }
Пример #2
0
 public PFGridMultiHeader(PFGridColumn c)
     : this()
 {
     _text   = c.Text;
     Visible = c.Visible; _width = c.Width; _dataIndex = c.DataIndex;
     // _isFirstColumn = c.IsFirstColumn;
 }
Пример #3
0
        private object GetCellText(object row, PFGridColumn c)
        {
            object val = null;

            if (!string.IsNullOrWhiteSpace(c.DataIndex))
            {
                if (row is DataRow)
                {
                    val = ((DataRow)row)[c.DataIndex];
                }
                else if (row is IDictionary)
                {
                    val = (row as IDictionary)[c.DataIndex];
                }
                else
                {
                    //var pi = row.GetType().GetProperty(c.DataIndex);
                    var pi = c.GetOrSetPropertyInfo(() => row.GetType().GetProperty(c.DataIndex));
                    val = pi.GetValue(row, null);
                }
            }
            if (c.Render != null)
            {
                val = c.Render(c, row, val);
            }
            //if (c.Render == null)
            //{
            //    if (row is DataRow)
            //    {
            //        val = ((DataRow)row)[c.DataIndex];
            //    }else if(row is IDictionary)
            //    {
            //        val = (row as IDictionary)[c.DataIndex];
            //    }
            //    else
            //    {
            //        var pi = row.GetType().GetProperty(c.DataIndex);
            //        val = pi.GetValue(row, null);
            //    }
            //}
            //else
            //{
            //    if (row is DataRow)
            //    {
            //       var temval = ((DataRow)row)[c.DataIndex];
            //        val = c.Render(c, row, temval);
            //    }
            //    else
            //    {
            //        var pi = row.GetType().GetProperty(c.DataIndex);
            //        var temval = pi.GetValue(row, null);
            //        val = c.Render(c, row, temval);
            //    }
            //}
            return(val);
        }
Пример #4
0
        public static void SetStyleByDataType(PFGridColumn c, Type dataType)
        {
            bool isPercent = dataType == typeof(PFPercent);

            if (dataType == typeof(decimal) || dataType == typeof(int) || isPercent)
            {
                c.SetStyle("text-align:right;padding-right: 9px");
                c.Render = (cc, r, v) =>
                {
                    var rr = PFDataHelper.Thousandth(v);
                    if (isPercent)
                    {
                        rr += " %";
                    }
                    return(rr);
                };
                c.SetClassName("col-r");
            }
        }
Пример #5
0
        private string TreeCellToHtml(TreeListItem row, int rowIdx, int level, PFGridColumn column, TreeMatrix matrix, bool isFirstColumn)
        {
            var    sb  = new StringBuilder();
            object val = GetCellText(row.Data, column);

            if (isFirstColumn)
            {
                //var css = "tree-tr-hitarea tree-tr-hitarea-expanded";
                var css  = _closeTree ? "hitarea hitarea-closed" : "hitarea hitarea-expanded";
                var line = "";
                for (var j = 0; j < level; j++)
                {
                    //line += string.Format("<div class='{0} {1}'></div>", "tree-tr-linearea ", GetClassByTreeMatrixNetLine(matrix.GetNetLine(j, rowIdx)));
                    line += string.Format("<div class='{0} {1}'></div>", "linearea ", GetClassByTreeMatrixNetLine(matrix.GetNetLine(j, rowIdx)));
                }
                val = line + string.Format("<div class='{0}'></div>", css) + val;

                //前面的GetCellText已经有调用render了,这里就不用了--benjamin20190705
                ////sb.AppendFormat("<td {1}  onclick='$pf.expandTree(this)'>{0}</td>", val, column.GetStyle());
                //if (column.Render != null)
                //{
                //    sb.AppendFormat("<td>{0}</td>", column.Render(column, row, (string)val)) ;
                //}
                //else
                //{
                sb.AppendFormat("<td>{0}</td>", val);//样式不要加到tbody上,否则页面太大了,onclick事件改到pfTreeTable的init上
                //}
            }
            else
            {
                //if (column.Render != null)
                //{
                //    //sb.AppendFormat("<td>{0}</td>", column.Render(column, row, (string)val));//样式不要加到tbody上,否则页面太大了
                //    sb.AppendFormat("<td {1}>{0}</td>", column.Render(column, row, (string)val), column.GetClassName());//样式不要加到tbody上,否则页面太大了,加上类名的页面大小多了1/23,但为了数字列右对齐
                //}
                //else
                //{
                //sb.AppendFormat("<td {1}>{0}</td>", val, column.GetStyle());
                sb.AppendFormat("<td {1}>{0}</td>", val, column.GetClassName());//样式不要加到tbody上,否则页面太大了
                //}
            }
            return(sb.ToString());
        }
Пример #6
0
        public virtual void ColumnsForAll(string modelConfigName)
        {
            var cs = new PFGridColumnCollection {
                Grid = this
            };

            if (!string.IsNullOrWhiteSpace(modelConfigName))
            {
                cs.SetModelConfig(modelConfigName);
            }

            if (_model != null && _model.Count > 0)
            {
                if (_model[0] is TreeListItem)
                {
                    PFDataHelper.EachObjectProperty((_model[0] as TreeListItem).Data, (i, name, value) =>
                    {
                        ////旧版只有一句?待验证--benjamin todo 20191014
                        //cs.Add(name);

                        var c = cs.Add(name);
                        if (value != null)
                        {
                            PFGridColumn.SetStyleByDataType(c, value.GetType());
                        }
                    });
                }
                else if (_model[0] is Dictionary <string, object> )//新版才有这段代码?待验证--benjamin todo 20191014
                {
                    var dict = (_model[0] as Dictionary <string, object>);
                    foreach (var key in dict.Keys)
                    {
                        var c     = cs.Add(key);
                        var value = dict[key];
                        if (value != null)
                        {
                            PFGridColumn.SetStyleByDataType(c, value.GetType());
                        }
                    }
                }
            }
            cs.ForEach(_columns.Add);
        }