using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Mesnac.Basic; using Mesnac.Gui.Edit.Common; using Mesnac.PlugIn.View; using Mesnac.Gui.Edit.Dialog; using Mesnac.Gui.Edit.Pad; namespace Mesnac.Gui.Edit.ViewContent { public partial class FrmDataSource : DefaultViewContent { public FrmDataSource() { InitializeComponent(); this.RefreshLvDataSource(); //刷新数据源 } /// /// 刷新列表视图中的数据源数据 /// public void RefreshLvDataSource() { this.lvDataSource.Items.Clear(); //重置工程数据源工厂 DisplayUtil.ResetProjectDataSourceFactory();//重置工程 Dictionary datasources = DataSourceFactory.Instance.DataSources; if (datasources != null) { ListViewItem lvItem = null; foreach (Mesnac.Basic.DataSourceItem dataSourceItem in datasources.Values) { lvItem = new ListViewItem(); lvItem.Text = dataSourceItem.Name; lvItem.SubItems.Add(dataSourceItem.Driver); lvItem.SubItems.Add(dataSourceItem.Server); lvItem.SubItems.Add(dataSourceItem.UserName); lvItem.SubItems.Add(dataSourceItem.Password); lvItem.SubItems.Add(dataSourceItem.Database); lvItem.SubItems.Add(dataSourceItem.ConnectionTimeout.ToString()); //lvItem.SubItems.Add(dataSourceItem.DriverClass); //lvItem.SubItems.Add(dataSourceItem.DataSourceClass); this.lvDataSource.Items.Add(lvItem); } } } //新建数据源 private void mnuNewDataSource_Click(object sender, EventArgs e) { FrmNewDataSource frmNewDataSource = new FrmNewDataSource(); DialogResult result = frmNewDataSource.ShowDialog(this); if (result == DialogResult.OK) { this.RefreshLvDataSource(); } } //编辑数据源 private void mnuEditDataSource_Click(object sender, EventArgs e) { if (this.lvDataSource.SelectedItems.Count > 0) { ListViewItem viewItem = this.lvDataSource.SelectedItems[0]; FrmNewDataSource frmNewDataSource = new FrmNewDataSource(viewItem.Text); DialogResult result = frmNewDataSource.ShowDialog(this); if (result == DialogResult.OK) { this.RefreshLvDataSource(); } } } //删除数据源 private void mnuDelDataSource_Click(object sender, EventArgs e) { if (this.lvDataSource.SelectedItems.Count > 0) { ListViewItem viewItem = this.lvDataSource.SelectedItems[0]; DialogResult result = MessageBox.Show("确定要删除吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { DataSourceFactory.Instance.Remove(viewItem.Text); DisplayUtil.SaveProjectDataSource(); //更新至文件 this.RefreshLvDataSource(); //刷新视图列表 } } } //选中数据源列出数据源下的数据对象 private void lvDataSource_SelectedIndexChanged(object sender, EventArgs e) { if (this.lvDataSource.SelectedItems.Count==1) { this.lvDataObject.Items.Clear(); this.lvDataObjectDetails.Items.Clear(); ListViewItem item = this.lvDataSource.SelectedItems[0]; TreeNode root = DataSourceFactory.Instance.Root; TreeNode dataSourceNode = null; foreach (TreeNode node in root.Nodes) { if (node.Text == item.Text) { dataSourceNode = node; break; } } if (dataSourceNode != null) { ListViewItem lvItem = null; //数据对象 foreach (TreeNode dataObjectsNode in dataSourceNode.Nodes) { foreach (TreeNode dataObjectNode in dataObjectsNode.Nodes) { lvItem = new ListViewItem(); lvItem.Text = dataObjectNode.Text; lvItem.Tag = dataObjectNode; lvItem.SubItems.Add(dataObjectsNode.Text); this.lvDataObject.Items.Add(lvItem); } } } } } /// /// 选中数据对象,列出数据对象下的列信息 /// private void lvDataObject_SelectedIndexChanged(object sender, EventArgs e) { if (this.lvDataObject.SelectedItems.Count == 1) { this.lvDataObjectDetails.Items.Clear(); ListViewItem item = this.lvDataObject.SelectedItems[0]; TreeNode dataObjectNode = item.Tag as TreeNode; if (dataObjectNode != null) { foreach(TreeNode detailsNode in dataObjectNode.Nodes) { ListViewItem lvItem = new ListViewItem(); lvItem.Text = detailsNode.Text; this.lvDataObjectDetails.Items.Add(lvItem); } } } } private void lvDataSource_MouseDoubleClick(object sender, MouseEventArgs e) { mnuEditDataSource.PerformClick(); } } }