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); // } //}); }
public PFGridMultiHeader(PFGridColumn c) : this() { _text = c.Text; Visible = c.Visible; _width = c.Width; _dataIndex = c.DataIndex; // _isFirstColumn = c.IsFirstColumn; }
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); }
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"); } }
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()); }
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); }