private void BwTransferViewsDoWork(object sender, DoWorkEventArgs e) { try { List <Entity> checkedViews = new List <Entity>(); foreach (ListViewItem item in ListViewDelegates.GetSelectedItems(lvSourceViews)) { checkedViews.Add((Entity)item.Tag); } e.Result = ViewHelper.TransferViews(checkedViews, service, targetService, _savedQueryMetadata); } catch (Exception error) { CommonDelegates.DisplayMessageBox(ParentForm, error.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void LvSourceViewsSelectedIndexChanged(object sender, System.EventArgs e) { lvSourceViewLayoutPreview.Columns.Clear(); if (lvSourceViews.SelectedItems.Count > 0) { lvSourceViews.SelectedIndexChanged -= LvSourceViewsSelectedIndexChanged; lvSourceViewLayoutPreview.Items.Clear(); lvSourceViews.Enabled = false; WorkAsync("Loading view layout...", evt => { Entity currentSelectedView = (Entity)evt.Argument; string layoutXml = currentSelectedView["layoutxml"].ToString(); string fetchXml = currentSelectedView.Contains("fetchxml") ? currentSelectedView["fetchxml"].ToString() : string.Empty; string currentEntityDisplayName = ListViewDelegates.GetSelectedItems(lvEntities)[0].Text; EntityMetadata currentEmd = entitiesCache.Find( emd => emd.DisplayName.UserLocalizedLabel.Label == currentEntityDisplayName); XmlDocument layoutDoc = new XmlDocument(); layoutDoc.LoadXml(layoutXml); EntityMetadata emdWithItems = MetadataHelper.RetrieveEntity(currentEmd.LogicalName, Service); var headers = new List <ColumnHeader>(); var item = new ListViewItem(); foreach (XmlNode columnNode in layoutDoc.SelectNodes("grid/row/cell")) { ColumnHeader header = new ColumnHeader(); header.Width = int.Parse(columnNode.Attributes["width"].Value); header.Text = MetadataHelper.RetrieveAttributeDisplayName(emdWithItems, columnNode.Attributes["name"].Value, fetchXml, Service); headers.Add(header); if (string.IsNullOrEmpty(item.Text)) //item.SubItems.Add("preview"); { item.Text = columnNode.Attributes["width"].Value + "px"; } else { item.SubItems.Add(columnNode.Attributes["width"].Value + "px"); } } evt.Result = new object[] { headers, item }; }, evt => { if (evt.Error != null) { MessageBox.Show(ParentForm, "Error while displaying view: " + evt.Error.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { var args = (object[])evt.Result; lvSourceViewLayoutPreview.Columns.AddRange(((List <ColumnHeader>)args[0]).ToArray()); lvSourceViewLayoutPreview.Items.Add((ListViewItem)args[1]); lvSourceViewLayoutPreview.Enabled = true; } lvSourceViews.SelectedIndexChanged += LvSourceViewsSelectedIndexChanged; lvSourceViews.Enabled = true; }, lvSourceViews.SelectedItems[0].Tag); } }
private void BwDisplayViewDoWork(object sender, DoWorkEventArgs e) { try { if (ListViewDelegates.GetSelectedItems(lvSourceViews).Count() > 1) { ColumnHeader header = new ColumnHeader(); header.Width = 380; header.Text = "Layout preview cannot be displayed when multiple views are selected."; ListViewDelegates.AddColumn(lvSourceViewLayoutPreview, header); } else { // Gets current view data Entity currentSelectedView = (Entity)ListViewDelegates.GetSelectedItems(lvSourceViews)[0].Tag; string layoutXml = currentSelectedView["layoutxml"].ToString(); string fetchXml = currentSelectedView.Contains("fetchxml") ? currentSelectedView["fetchxml"].ToString() : string.Empty; string currentEntityDisplayName = ListViewDelegates.GetSelectedItems(lvEntities)[0].Text; EntityMetadata currentEmd = entitiesCache.Find( delegate(EntityMetadata emd) { return(emd.DisplayName.UserLocalizedLabel.Label == currentEntityDisplayName); }); XmlDocument layoutDoc = new XmlDocument(); layoutDoc.LoadXml(layoutXml); EntityMetadata emdWithItems = MetadataHelper.RetrieveEntity(currentEmd.LogicalName, service); ListViewItem item = new ListViewItem(); foreach (XmlNode columnNode in layoutDoc.SelectNodes("grid/row/cell")) { ColumnHeader header = new ColumnHeader(); header.Text = MetadataHelper.RetrieveAttributeDisplayName(emdWithItems, columnNode.Attributes["name"].Value, fetchXml, service); int columnWidth = columnNode.Attributes["width"] == null ? 0 : int.Parse(columnNode.Attributes["width"].Value); header.Width = columnWidth; ListViewDelegates.AddColumn(lvSourceViewLayoutPreview, header); if (string.IsNullOrEmpty(item.Text)) { item.Text = columnWidth == 0 ? "(undefined)": (columnWidth + "px"); } else { item.SubItems.Add(columnWidth == 0 ? "(undefined)": (columnWidth + "px")); } } ListViewDelegates.AddItem(lvSourceViewLayoutPreview, item); GroupBoxDelegates.SetEnableState(gbSourceViewLayout, true); } } catch (Exception error) { CommonDelegates.DisplayMessageBox(ParentForm, "Error while displaying view: " + error.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }