private static IList GetDataSourceCore(DataContext dataContext, object dataSource, string dataMember) { ListBrowser browser = dataContext.GetDataBrowser(dataSource, dataMember, true) as ListBrowser; if (browser == null) { return(null); } return(browser.List); }
public DataGroupInfo(object dataSource, string dataMember, ListBrowser listBrowser, IList list, GroupRowInfo groupRowInfo) { if (dataSource == null) { throw new ArgumentNullException(nameof(dataSource)); } if (dataMember == null) { throw new ArgumentNullException(nameof(dataMember)); } ListBrowser = listBrowser; List = list; GroupRowInfo = groupRowInfo; DataSource = dataSource; DataMember = dataMember; }
public static GroupRowInfo GetGroupInfo(ListBrowser browser, byte rowGroupLevel, int browserPosition) { var listController = (SortedListController)browser.ListController; var dataController = listController.GetDataController(); // All tests I could come up with indicate that browser position and controller row are the same value. var r = dataController.GroupInfo.Single(i => i.Level == rowGroupLevel && i.ContainsControllerRow(browserPosition)); /* Has never happened, in production for months. * var sanityTestIndicesMapper = listController.GetIndicesMapper(); * for (var i = 0; i < r.ChildControllerRowCount; i++) * if (sanityTestIndicesMapper[r.ChildControllerRow + i] != r.ChildControllerRow + i) * throw new InvalidOperationException("Sanity check failed on list controller indices mapper."); */ return(r); }
public static GroupRowInfo GetGroupInfo(ListBrowser browser, byte rowGroupLevel, int browserPosition) { var listController = (SortedListController)browser.ListController; var dataController = listController.GetDataController(); // All tests I could come up with indicate that browser position and controller row are the same value. var r = dataController.GroupInfo.Single(i => i.Level == rowGroupLevel && i.ContainsControllerRow(browserPosition)); /* Has never happened, in production for months. var sanityTestIndicesMapper = listController.GetIndicesMapper(); for (var i = 0; i < r.ChildControllerRowCount; i++) if (sanityTestIndicesMapper[r.ChildControllerRow + i] != r.ChildControllerRow + i) throw new InvalidOperationException("Sanity check failed on list controller indices mapper."); */ return r; }