public bool IncludeInView(DataSourceObject data) { foreach (var f in _filters.Values) { if (!f.Matches(data)) { return(false); } } return(true); }
public void DeleteItem(DataSourceObject data) { if (!IncludeInView(data)) { return; } int idx = Items.IndexOfKey(GetID(data)); if (idx >= 0) { Items.RemoveAt(idx); } }
public void UpdateItem(DataSourceObject data) { if (!IncludeInView(data)) { return; } int idx = Items.IndexOfKey(GetID(data)); if (idx >= 0) { Items[idx] = CreateItem(data); } }
public void AddItem(DataSourceObject data) { if (!IncludeInView(data)) { return; } if (PrependItems) { Items.Insert(0, CreateItem(data)); } else { Items.Add(CreateItem(data)); } }
virtual protected ListViewItem CreateItem(DataSourceObject data) { List <String> subItems = new List <String>(); foreach (ColumnHeader col in Columns) { var pName = col.Tag.ToString(); if (pName == null || pName == String.Empty || !data.HasProperty(pName)) { throw new Exception(String.Format("Cannot find property for column {0} using property name {1}", col.Name, pName)); } var val = data.Get <Object>(pName); subItems.Add(val == null ? String.Empty : val.ToString()); } ListViewItem lvi = new ListViewItem(subItems.ToArray()); lvi.Name = GetID(data); return(lvi); }
public bool Matches(DataSourceObject data) { if (data == null) { throw new Exception("Cannot match on null data"); } String[] propertyNames = PropertyName.Split('|'); foreach (var pName in propertyNames) { foreach (var kv in Controls) { Control c = kv.Key; List <Object> values = kv.Value; if (c is TextBox) { var s1 = ((TextBox)c).Text; if (s1 == null || s1 == String.Empty) { return(true); } s1 = s1.ToLower(); var s2 = data.Get <String>(pName).ToLower(); if (s2.IndexOf(s1) >= 0) { return(true); } } else if (c is CheckBox) { if (((CheckBox)c).Checked && values.Contains(data.Get <Object>(pName))) { return(true); } } else if (c is ComboBox) { var cmb = (ComboBox)c; if (cmb.SelectedIndex == -1 || cmb.SelectedItem == null || ((String)cmb.SelectedItem) == String.Empty || values.Contains((String)cmb.SelectedItem)) { return(true); } var val = data.Get <Object>(pName); if (val.ToString() == ((String)cmb.SelectedItem)) { return(true); } } else if (c is ListView) { var lv = (ListView)c; if (lv.SelectedItems == null || lv.SelectedItems.Count == 0) { return(true); } var val = data.Get <String>(pName); foreach (ListViewItem lvi in lv.SelectedItems) { if (lvi.Name == val) { return(true); } } } else { throw new Exception("ChetchListView::MatchesFilter does not support control " + c.GetType().ToString()); } } } return(false); }
protected String GetID(DataSourceObject data) { return(data.Get <String>(DataSourceObjectIDName)); }