private static bool RowIsMatched(PageRequest request, ViewPage page, DataRow row) { foreach (string f in request.Filter) { Match m = Regex.Match(f, "^(?\'FieldName\'\\w+)\\:(?\'Operation\'=)(?\'Value\'.+)$"); if (m.Success) { string fieldName = m.Groups["FieldName"].Value; if (page.ContainsField(fieldName)) { string fieldValue = m.Groups["Value"].Value; if (fieldValue == "null") { fieldValue = String.Empty; } object fv = row[fieldName]; if (!((Convert.ToString(fv) == fieldValue))) { return(false); } } } } return(true); }
private void EnsurePageFields(ViewPage page, SelectClauseDictionary expressions) { XPathNavigator statusBar = _config.SelectSingleNode("/c:dataController/c:statusBar"); if (statusBar != null) page.StatusBar = statusBar.Value; if (page.Fields.Count == 0) { XPathNodeIterator fieldIterator = _config.Select("/c:dataController/c:fields/c:field"); while (fieldIterator.MoveNext()) { string fieldName = fieldIterator.Current.GetAttribute("name", String.Empty); if (expressions.ContainsKey(fieldName)) page.Fields.Add(new DataField(fieldIterator.Current, Resolver)); } } XPathNodeIterator keyFieldIterator = _config.Select("/c:dataController/c:fields/c:field[@isPrimaryKey=\'true\' or @hidden=\'true\']"); while (keyFieldIterator.MoveNext()) { string fieldName = keyFieldIterator.Current.GetAttribute("name", String.Empty); if (!(page.ContainsField(fieldName))) page.Fields.Add(new DataField(keyFieldIterator.Current, Resolver, true)); } XPathNodeIterator aliasIterator = _view.Select(".//c:dataFields/c:dataField/@aliasFieldName", Resolver); while (aliasIterator.MoveNext()) if (!(page.ContainsField(aliasIterator.Current.Value))) { XPathNodeIterator fieldIterator = _config.Select("/c:dataController/c:fields/c:field[@name=\'{0}\']", aliasIterator.Current.Value); if (fieldIterator.MoveNext()) page.Fields.Add(new DataField(fieldIterator.Current, Resolver, true)); } XPathNodeIterator lookupFieldIterator = _config.Select("/c:dataController/c:fields/c:field[c:items/@dataController]"); while (lookupFieldIterator.MoveNext()) { string fieldName = lookupFieldIterator.Current.GetAttribute("name", String.Empty); if (!(page.ContainsField(fieldName))) page.Fields.Add(new DataField(lookupFieldIterator.Current, Resolver, true)); } int i = 0; while (i < page.Fields.Count) { DataField field = page.Fields[i]; if ((!(field.FormatOnClient) && !(String.IsNullOrEmpty(field.DataFormatString))) && !(field.IsMirror)) { page.Fields.Insert((i + 1), new DataField(field)); i = (i + 2); } else i++; } XPathNodeIterator dynamicConfigIterator = _config.Select("/c:dataController/c:fields/c:field[c:configuration!=\'\']/c:configuration|/c:dataCo" + "ntroller/c:fields/c:field/c:items[@copy!=\'\']/@copy"); while (dynamicConfigIterator.MoveNext()) { Match dynamicConfig = Regex.Match(dynamicConfigIterator.Current.Value, "(\\w+)=(\\w+)"); while (dynamicConfig.Success) { int groupIndex = 2; if (dynamicConfigIterator.Current.Name == "copy") groupIndex = 1; if (!(page.ContainsField(dynamicConfig.Groups[groupIndex].Value))) { XPathNavigator nav = _config.SelectSingleNode("/c:dataController/c:fields/c:field[@name=\'{0}\']", dynamicConfig.Groups[1].Value); if (nav != null) page.Fields.Add(new DataField(nav, Resolver, true)); } dynamicConfig = dynamicConfig.NextMatch(); } if (page.InTransaction) { XPathNodeIterator globalFieldIterator = _config.Select("/c:dataController/c:fields/c:field"); while (globalFieldIterator.MoveNext()) { string fieldName = globalFieldIterator.Current.GetAttribute("name", String.Empty); if (!(page.ContainsField(fieldName))) page.Fields.Add(new DataField(globalFieldIterator.Current, Resolver, true)); } } } foreach (DataField field in page.Fields) ConfigureDataField(page, field); }
protected virtual DbDataReader ExecuteVirtualReader(PageRequest request, ViewPage page) { DataTable table = new DataTable(); foreach (DataField field in page.Fields) table.Columns.Add(field.Name, typeof(int)); DataRow r = table.NewRow(); if (page.ContainsField("PrimaryKey")) r["PrimaryKey"] = 1; table.Rows.Add(r); return new DataTableReader(table); }
private static bool RowIsMatched(PageRequest request, ViewPage page, DataRow row) { foreach (string f in request.Filter) { Match m = Regex.Match(f, "^(?\'FieldName\'\\w+)\\:(?\'Operation\'=)(?\'Value\'.+)$"); if (m.Success) { string fieldName = m.Groups["FieldName"].Value; if (page.ContainsField(fieldName)) { string fieldValue = m.Groups["Value"].Value; if (fieldValue == "null") fieldValue = String.Empty; object fv = row[fieldName]; if (!((Convert.ToString(fv) == fieldValue))) return false; } } } return true; }