Example #1
0
 public DesignerBoard Warp()
 {
     foreach (object obj in this.Children)
     {
         if (obj is DesignerItem)
         {
             //获取DesignerItem中直接包含的BoardControl
             DesignerControl clonedChild = (DesignerControl)((obj as DesignerItem).Content as IDesigner).GetDesignerModel();
             this.Board.AddVisualControl(clonedChild);
             if (clonedChild is DesignerChart)
             {
                 foreach (DesignerChartDataSerie dcd in (clonedChild as DesignerChart).Series)
                 {
                     IDynamicData idd = dcd as IDynamicData;
                     if (!string.IsNullOrEmpty(idd.DataSourceKey))
                     {
                         DesignerDataSource ds = DataSourceManager.GetDataSource(idd.DataSourceKey);
                         this.Board.AddBackControl(ds);
                     }
                 }
             }
             //若该设计模型是动态数据类型,则将该数据接口添加至Board的后台元素集合中
             if (clonedChild is IDynamicData)
             {
                 IDynamicData idd = clonedChild as IDynamicData;
                 if (!string.IsNullOrEmpty(idd.DataSourceKey))
                 {
                     DesignerDataSource ds = DataSourceManager.GetDataSource(idd.DataSourceKey);
                     this.Board.AddBackControl(ds);
                 }
             }
         }
     }
     return(this.Board);
 }
 private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (e.AddedItems.Count > 0)
     {
         this.SelectedItem = e.AddedItems[0] as DesignerStaticTextDataSource;
     }
 }
 public void AddOrUpdate(string key, DesignerDataSource ds, int timeSpan, DispatcherTimer timer, object data)
 {
     AddOrUpdateDataSource(key, ds);
     AddOrUpdateTimeSpan(key, timeSpan);
     AddOrUpdateTimer(key, timer);
     AddOrUpdateData(key, data);
 }
 private void DSList_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (e.AddedItems.Count > 0)
     {
         this.SelectedItem = e.AddedItems[0] as DesignerDataBaseDataSource;
     }
 }
        private void AddButton_Click(object sender, RoutedEventArgs e)
        {
            DesignerDataSource ds      = null;
            TabItemEx          tabItem = MainTab.SelectedItem as TabItemEx;

            switch (tabItem.Header.ToString())
            {
            case "数据库":
                ds = new DesignerDataBaseDataSource();
                DataBaseDataSourceList.Add(ds as DesignerDataBaseDataSource);
                break;

            case "本地文件":
                throw new NotImplementedException();
                break;

            case "网络资源":
                throw new NotImplementedException();
                break;

            case "静态文本":
                ds = new DesignerStaticTextDataSource();
                StaticTextDataSourceList.Add(ds as DesignerStaticTextDataSource);
                break;

            default:
                throw new NotImplementedException();
            }
            this.SelectedItem = ds;
        }
        private void DeleteButton_Click(object sender, RoutedEventArgs e)
        {
            string path = Directory.GetCurrentDirectory() + "\\DataSources\\DataBase\\" + this.SelectedItem.Name + ".bds";

            File.Delete(path);
            this.DataBaseDataSourceList.Remove(this.SelectedItem as DesignerDataBaseDataSource);
            this.SelectedItem = null;
        }
 public void AddOrUpdateDataSource(string key, DesignerDataSource ds)
 {
     if (DataSourceList.Keys.Contains(key))
     {
         DataSourceList[key] = ds;
     }
     else
     {
         DataSourceList.Add(key, ds);
     }
 }
 void Select(string name)
 {
     if (string.IsNullOrEmpty(name))
     {
         return;
     }
     foreach (DesignerDataBaseDataSource ds in DataBaseDataSourceList)
     {
         if (ds.Name == name)
         {
             this.SelectedItem = ds;
             break;
         }
     }
 }
        /// <summary>
        /// 执行
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>

        private async static void ExcuteDataSource(string key)
        {
            DesignerDataSource ds = GetDataSource(key);

            try
            {
                switch (ds.DataSourceType)
                {
                case DesignerDataSourceType.DataBase:
                    DataTable dbData = await ExcuteDataBaseDataSource(ds as DesignerDataBaseDataSource);

                    List.AddOrUpdateData(key, dbData);
                    break;

                case DesignerDataSourceType.LocalFile:
                    object lfData = await ExcuteLocalFileDataSource(ds as DesignerLocalFileDataSource);

                    List.AddOrUpdateData(key, lfData);
                    break;

                case DesignerDataSourceType.RemoteURL:
                    object ruData = await ExcuteRemoteURIDataSource(ds as DesignerRemoteURIDataSource);

                    List.AddOrUpdateData(key, ruData);
                    break;

                case DesignerDataSourceType.StaticText:
                    object stData = ExcuteStaticTextDataSource(ds as DesignerStaticTextDataSource);
                    List.AddOrUpdateData(key, stData);
                    break;

                default:
                    throw new Exception("未知的数据源执行方法");
                }
            }
            catch (Exception e)
            {
                LogManager.WriteLog("执行数据源:" + ds.Name + "时发生异常,详细信息:" + e.Message);
            }
        }
 /// <summary>
 /// 注册数据源
 /// </summary>
 /// <param name="dataSourceKey"></param>
 /// <param name="type"></param>
 /// <param name="dataSource"></param>
 public static void Register(string dataSourceKey, DesignerDataSourceType type, DesignerDataSource dataSource)
 {
     if (string.IsNullOrEmpty(dataSourceKey))
     {
         dataSourceKey = dataSource.Name;
     }
     List.AddOrUpdate(dataSourceKey, dataSource, dataSource.TimeSpan < 0 ? 0 : dataSource.TimeSpan, new DispatcherTimer(), null);
 }