You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

162 lines
6.1 KiB
C#

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(); //刷新数据源
}
/// <summary>
/// 刷新列表视图中的数据源数据
/// </summary>
public void RefreshLvDataSource()
{
this.lvDataSource.Items.Clear();
//重置工程数据源工厂
DisplayUtil<ProjectWindow>.ResetProjectDataSourceFactory();//重置工程
Dictionary<string, Mesnac.Basic.DataSourceItem> 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<ProjectWindow>.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);
}
}
}
}
}
/// <summary>
/// 选中数据对象,列出数据对象下的列信息
/// </summary>
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();
}
}
}