/// <summary> /// 数据项填充 /// </summary> /// <param name="element"></param> /// <returns></returns> public bool Fill(IDBReportItem element,string sql) { DataTable dt = GetDataTable(sql); if (dt == null) { return false; } if (dt.Rows.Count > 0) { if (!FillData(element, dt.Rows[0], dt.Columns)) { return false; } } return true; }
//填充对象属性 protected bool FillData(IDBReportItem element, DataRow dr, DataColumnCollection columns) { Type type = element.GetType(); return FillData(element, type, dr, columns); }
protected void FillProperty(IDBReportItem element, PropertyInfo p, object v) { try { if (v != DBNull.Value) { object value = Convert.ChangeType(v, p.PropertyType); p.SetValue(element, value, null); } else { p.SetValue(element, DefaultForType(p.PropertyType), null); } } catch (Exception ex) { throw ex; } }
protected bool FillData(IDBReportItem element, Type type, DataRow dr, DataColumnCollection columns) { PropertyInfo prop = null; foreach (DataColumn dc in columns) { try { prop = type.GetProperty(dc.ColumnName); if (IsColumn(prop)) { FillProperty(element, prop, dr[dc]); } } catch (Exception ex) { return false; } } return true; }