private void Init() { qryform = new QueryForm(qryTmpl.CloneNode(true).OuterXml); PropertyInfo[] dataprop = qryData.GetType().GetProperties(); IList <DataItem> conditions = qryform.GetItems(); foreach (DataItem di in conditions) { string name = di.GetAttr("name"); if (name.IsNullOrEmpty()) { DataForm df = di.GetChildDataForm(); IList <DataItem> dis = df.GetItems(); foreach (DataItem di2 in dis) { name = di2.GetAttr("name"); var prop = dataprop.FirstOrDefault(p1 => p1.Name == name); if (prop == null) { df.Remove(di2); continue; } di2.SetAttr("value", prop.FastGetValue(qryData).ToString()); di2.SetAttr("dataType", prop.PropertyType.FullName); } } else { var prop = dataprop.FirstOrDefault(p1 => p1.Name == name); if (prop == null) { qryform.Remove(di); continue; } di.SetAttr("value", prop.FastGetValue(qryData).ToString()); di.SetAttr("dataType", prop.PropertyType.FullName); } } }
public QueryBuilder(QueryForm qryTmpl, object qryData) { this.qryData = qryData; this.qryTmpl = qryTmpl; Init(); }