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 ICSharpCode.Core; 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 { private int datasourceSelectedIndex = -1; //保存选中的数据源索引 public FrmDataSource() { InitializeComponent(); this.InitUIMethod(); this.RefreshLvDataSource(); //刷新数据源 } #region 重写DefaultViewCotnent的RedrawContent方法 /// /// 重绘组件事件触发时执行 /// public override void RedrawContent() { base.RedrawContent(); this.InitUIMethod(); this.RefreshLvDataSource(); //刷新数据源 } #endregion /// /// 初始化界面元素 /// protected void InitUIMethod() { this.Text = StringParser.Parse(ResourceService.GetString("Mesnac_ViewContent_FrmDataSource_Text")); //数据源管理器 this.TitleName = StringParser.Parse(ResourceService.GetString("Mesnac_ViewContent_FrmDataSource_Text")); //数据源管理器 this.groupBox1.Text = StringParser.Parse(ResourceService.GetString("Mesnac_ViewContent_FrmDataSource_groupBox1_Text")); //数据源信息 this.groupBox2.Text = StringParser.Parse(ResourceService.GetString("Mesnac_ViewContent_FrmDataSource_groupBox2_Text")); //数据对象信息 this.groupBox3.Text = StringParser.Parse(ResourceService.GetString("Mesnac_ViewContent_FrmDataSource_groupBox3_Text")); //数据对象详情 this.lvDataSource.Columns[0].Text = StringParser.Parse(ResourceService.GetString("Mesnac_ViewContent_FrmDataSource_lvDataSource_colName_Text")); //名称 this.lvDataSource.Columns[1].Text = StringParser.Parse(ResourceService.GetString("Mesnac_ViewContent_FrmDataSource_lvDataSource_colDataDriverName_Text")); //数据驱动 this.lvDataSource.Columns[2].Text = StringParser.Parse(ResourceService.GetString("Mesnac_ViewContent_FrmDataSource_lvDataSource_colServer_Text")); //服务器 this.lvDataSource.Columns[3].Text = StringParser.Parse(ResourceService.GetString("Mesnac_ViewContent_FrmDataSource_lvDataSource_colUserName_Text")); //用户名 this.lvDataSource.Columns[4].Text = StringParser.Parse(ResourceService.GetString("Mesnac_ViewContent_FrmDataSource_lvDataSource_colPassword_Text")); //密码 this.lvDataSource.Columns[5].Text = StringParser.Parse(ResourceService.GetString("Mesnac_ViewContent_FrmDataSource_lvDataSource_colDatabase_Text")); //数据库 this.lvDataSource.Columns[6].Text = StringParser.Parse(ResourceService.GetString("Mesnac_ViewContent_FrmDataSource_lvDataSource_colConnectionTimeout_Text")); //连接超时 this.lvDataObject.Columns[0].Text = StringParser.Parse(ResourceService.GetString("Mesnac_ViewContent_FrmDataSource_lvDataObject_colDataObjectName_Text")); //数据对象名称 this.lvDataObject.Columns[1].Text = StringParser.Parse(ResourceService.GetString("Mesnac_ViewContent_FrmDataSource_lvDataObject_colDataObjectType_Text")); //数据对象类型 this.lvDataObjectDetails.Columns[0].Text = StringParser.Parse(ResourceService.GetString("Mesnac_ViewContent_FrmDataSource_lvDataObjectDetails_colDetailsName_Text")); //名称 this.mnuNewDataSource.Text = StringParser.Parse(ResourceService.GetString("Mesnac_Form_mnuNew_Text")); //新建 this.mnuEditDataSource.Text = StringParser.Parse(ResourceService.GetString("Mesnac_Form_mnuEdit_Text")); //编辑 this.mnuDelDataSource.Text = StringParser.Parse(ResourceService.GetString("Mesnac_Form_mnuDelete_Text")); //删除 } /// /// 刷新列表视图中的数据源数据 /// 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); } if (this.datasourceSelectedIndex != -1) { if (this.datasourceSelectedIndex >= this.lvDataSource.Items.Count) { this.datasourceSelectedIndex = this.lvDataSource.Items.Count - 1; } if (this.datasourceSelectedIndex < 0) { this.datasourceSelectedIndex = 0; } this.lvDataSource.Items[this.datasourceSelectedIndex].Selected = true; } } } //新建数据源 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]; string msg1 = StringParser.Parse(ResourceService.GetString("Dialog_MessageBox_DeleteAsk")); //确定要删除吗? DialogResult result = MessageBox.Show(msg1, Mesnac.Basic.LanguageHelper.Caption, 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.datasourceSelectedIndex = this.lvDataSource.SelectedIndices[0]; 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(); } } }