private void BindDataGrid(bool dataBind) { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("Id", typeof(string))); dt.Columns.Add(new DataColumn("FullId", typeof(string))); dt.Columns.Add(new DataColumn("Title", typeof(string))); dt.Columns.Add(new DataColumn("Order", typeof(string))); dt.Columns.Add(new DataColumn("Hidden", typeof(bool))); dt.Columns.Add(new DataColumn("HiddenParent", typeof(bool))); dt.Columns.Add(new DataColumn("HiddenLayer", typeof(string))); dt.Columns.Add(new DataColumn("Added", typeof(bool))); dt.Columns.Add(new DataColumn("AddedLayer", typeof(string))); dt.Columns.Add(new DataColumn("Changed", typeof(bool))); dt.Columns.Add(new DataColumn("ChangedLayer", typeof(string))); dt.Columns.Add(new DataColumn("Odd", typeof(bool))); bool odd = true; string profileString = ProfileId.HasValue ? ProfileId.Value.ToString() : String.Empty; string principalString = UserId.HasValue ? UserId.Value.ToString() : String.Empty; if (UserId.HasValue) { profileString = ProfileManager.GetProfileIdByUser(UserId.Value).ToString(); } IXPathNavigable navigable; Selector selector = new Selector(string.Empty, string.Empty, string.Empty, profileString, principalString); using (DisableDataCacheScope scope = new DisableDataCacheScope()) { navigable = Mediachase.Ibn.XmlTools.XmlBuilder.GetCustomizationXml(null, Mediachase.Ibn.XmlTools.StructureType.Navigation, selector); } XPathNavigator tabsNode = navigable.CreateNavigator().SelectSingleNode("Navigation/Tabs"); foreach (XPathNavigator subItem in tabsNode.SelectChildren("Tab", string.Empty)) { bool hidden; bool.TryParse(subItem.GetAttribute("hidden", string.Empty), out hidden); // don't show items, hidden at the above layer string hiddenLayer = subItem.GetAttribute("hiddenLayer", string.Empty); if (hidden && ProfileId.HasValue && hiddenLayer == NavigationManager.CustomizationLayerGlobal) { continue; } if (hidden && UserId.HasValue && (hiddenLayer == NavigationManager.CustomizationLayerGlobal || hiddenLayer == NavigationManager.CustomizationLayerProfile)) { continue; } string id = subItem.GetAttribute("id", string.Empty); DataRow dr = dt.NewRow(); dr["Id"] = subItem.GetAttribute("id", string.Empty); dr["FullId"] = id; dr["Title"] = UtilHelper.GetResFileString(subItem.GetAttribute("text", string.Empty)); dr["Order"] = subItem.GetAttribute("order", string.Empty); dr["Hidden"] = hidden; dr["HiddenParent"] = false; bool changed; bool.TryParse(subItem.GetAttribute("changed", string.Empty), out changed); dr["Changed"] = changed; dr["Odd"] = odd; string addedString = subItem.GetAttribute("added", string.Empty); if (String.IsNullOrEmpty(addedString)) { dr["Added"] = false; } else { dr["Added"] = bool.Parse(addedString); } dr["HiddenLayer"] = subItem.GetAttribute("hiddenLayer", string.Empty); dr["ChangedLayer"] = subItem.GetAttribute("changedLayer", string.Empty); dr["AddedLayer"] = subItem.GetAttribute("addedLayer", string.Empty); dt.Rows.Add(dr); // if (!hidden) ProcessChildren(dt, subItem, id, hidden, 0, odd); odd = !odd; } grdMain.DataSource = dt.DefaultView; if (dataBind) { grdMain.DataBind(); } }
private void BindDataGrid(bool dataBind) { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("Id", typeof(string))); dt.Columns.Add(new DataColumn("FullId", typeof(string))); dt.Columns.Add(new DataColumn("Title", typeof(string))); dt.Columns.Add(new DataColumn("Order", typeof(string))); dt.Columns.Add(new DataColumn("Hidden", typeof(bool))); dt.Columns.Add(new DataColumn("HiddenParent", typeof(bool))); dt.Columns.Add(new DataColumn("HiddenLayer", typeof(string))); dt.Columns.Add(new DataColumn("Added", typeof(bool))); dt.Columns.Add(new DataColumn("AddedLayer", typeof(string))); dt.Columns.Add(new DataColumn("Changed", typeof(bool))); dt.Columns.Add(new DataColumn("ChangedLayer", typeof(string))); dt.Columns.Add(new DataColumn("Odd", typeof(bool))); bool odd = true; string profileString = ProfileId.HasValue ? ProfileId.Value.ToString() : String.Empty; string principalString = UserId.HasValue ? UserId.Value.ToString() : String.Empty; if (UserId.HasValue) profileString = ProfileManager.GetProfileIdByUser(UserId.Value).ToString(); IXPathNavigable navigable; Selector selector = new Selector(string.Empty, string.Empty, string.Empty, profileString, principalString); using (DisableDataCacheScope scope = new DisableDataCacheScope()) { navigable = Mediachase.Ibn.XmlTools.XmlBuilder.GetCustomizationXml(null, Mediachase.Ibn.XmlTools.StructureType.Navigation, selector); } XPathNavigator tabsNode = navigable.CreateNavigator().SelectSingleNode("Navigation/Tabs"); foreach (XPathNavigator subItem in tabsNode.SelectChildren("Tab", string.Empty)) { bool hidden; bool.TryParse(subItem.GetAttribute("hidden", string.Empty), out hidden); // don't show items, hidden at the above layer string hiddenLayer = subItem.GetAttribute("hiddenLayer", string.Empty); if (hidden && ProfileId.HasValue && hiddenLayer == NavigationManager.CustomizationLayerGlobal) continue; if (hidden && UserId.HasValue && (hiddenLayer == NavigationManager.CustomizationLayerGlobal || hiddenLayer == NavigationManager.CustomizationLayerProfile)) continue; string id = subItem.GetAttribute("id", string.Empty); DataRow dr = dt.NewRow(); dr["Id"] = subItem.GetAttribute("id", string.Empty); dr["FullId"] = id; dr["Title"] = UtilHelper.GetResFileString(subItem.GetAttribute("text", string.Empty)); dr["Order"] = subItem.GetAttribute("order", string.Empty); dr["Hidden"] = hidden; dr["HiddenParent"] = false; bool changed; bool.TryParse(subItem.GetAttribute("changed", string.Empty), out changed); dr["Changed"] = changed; dr["Odd"] = odd; string addedString = subItem.GetAttribute("added", string.Empty); if (String.IsNullOrEmpty(addedString)) dr["Added"] = false; else dr["Added"] = bool.Parse(addedString); dr["HiddenLayer"] = subItem.GetAttribute("hiddenLayer", string.Empty); dr["ChangedLayer"] = subItem.GetAttribute("changedLayer", string.Empty); dr["AddedLayer"] = subItem.GetAttribute("addedLayer", string.Empty); dt.Rows.Add(dr); // if (!hidden) ProcessChildren(dt, subItem, id, hidden, 0, odd); odd = !odd; } grdMain.DataSource = dt.DefaultView; if (dataBind) grdMain.DataBind(); }