예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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);
            }
        }