private void toolStripMenuItemViewData_Click(object sender, EventArgs e) { string fc_name = selectNode.Text; string set_name = selectNode.Parent.Text; myTreeNode node = (myTreeNode)selectNode.Parent.Parent; IConnectionInfo ci = node.con; IDataSource ds = null; IFeatureDataSet dataset = null; IFeatureClass fc = null; try { ds = dsFactory.OpenDataSource(ci); dataset = ds.OpenFeatureDataset(set_name); fc = dataset.OpenFeatureClass(fc_name); IQueryFilter filter = new QueryFilter(); int nCount = fc.GetCount(filter); if (nCount == 0) { return; } // 初始化表格 DataTable dt = CreateDataTable(fc); // 查找数据 GetResultSet(fc, filter, dt); // 显示表格 FCConnectionInfo info = new FCConnectionInfo(ci, set_name, fc_name); new AttributeFrm(dt, info, filter.WhereClause).Show(); } catch (COMException ex) { System.Diagnostics.Trace.WriteLine(ex.Message); } finally { if (ds != null) { //Marshal.ReleaseComObject(ds); ds = null; } if (dataset != null) { //Marshal.ReleaseComObject(dataset); dataset = null; } if (fc != null) { //Marshal.ReleaseComObject(fc); fc = null; } } }
// 公共方法 private void bindDataToCatalogTree(IConnectionInfo ci) { try { if (dsFactory == null) { dsFactory = new DataSourceFactory(); } IDataSource ds = dsFactory.OpenDataSource(ci); myTreeNode sourceNode = null; if (ci.ConnectionType == gviConnectionType.gviConnectionMySql5x) { sourceNode = new myTreeNode(ci.Database + "@" + ci.Server, ci); } else { sourceNode = new myTreeNode(ci.Database, ci); } this.treeView1.Nodes.Add(sourceNode); // 获取dataset string[] setnames = (string[])ds.GetFeatureDatasetNames(); if (setnames.Length == 0) { return; } foreach (string setname in setnames) { IFeatureDataSet dataset = ds.OpenFeatureDataset(setname); TreeNode setNode = new TreeNode(setname, 1, 1); sourceNode.Nodes.Add(setNode); // 获取featureclass string[] fcnames = (string[])dataset.GetNamesByType(gviDataSetType.gviDataSetFeatureClassTable); if (fcnames == null || fcnames.Length == 0) { continue; } foreach (string fcname in fcnames) { IFeatureClass fc = dataset.OpenFeatureClass(fcname); TreeNode fcNode = new TreeNode(fcname, 2, 2); fcNode.ContextMenuStrip = this.contextMenuStrip2; setNode.Nodes.Add(fcNode); // 获取属性字段 IFieldInfoCollection fieldinfos = fc.GetFields(); for (int i = 0; i < fieldinfos.Count; i++) { IFieldInfo fieldinfo = fieldinfos.Get(i); if (null == fieldinfo) { continue; } TreeNode fieldinfoNode = new TreeNode(fieldinfo.Name); fieldinfoNode.ContextMenuStrip = this.contextMenuStrip1; // 绑定右键菜单 fcNode.Nodes.Add(fieldinfoNode); } } } } catch (COMException ex) { System.Diagnostics.Trace.WriteLine(ex.Message); return; } }
private void toolStripMenuItemFieldInfo_Click(object sender, EventArgs e) { string fieldinfo_name = selectNode.Text; string fc_name = selectNode.Parent.Text; string set_name = selectNode.Parent.Parent.Text; myTreeNode node = (myTreeNode)selectNode.Parent.Parent.Parent; IConnectionInfo ci = node.con; IDataSource ds = null; IFeatureDataSet dataset = null; IFeatureClass fc = null; IFieldInfoCollection fieldinfos = null; try { ds = dsFactory.OpenDataSource(ci); dataset = ds.OpenFeatureDataset(set_name); fc = dataset.OpenFeatureClass(fc_name); fieldinfos = fc.GetFields(); for (int i = 0; i < fieldinfos.Count; i++) { IFieldInfo fieldinfo = fieldinfos.Get(i); if (null == fieldinfo) { continue; } if (fieldinfo_name == fieldinfo.Name) { FieldInfoForm form = new FieldInfoForm(fieldinfo); form.Show(); } } } catch (COMException ex) { System.Diagnostics.Trace.WriteLine(ex.Message); } finally { if (ds != null) { //Marshal.ReleaseComObject(ds); ds = null; } if (dataset != null) { //Marshal.ReleaseComObject(dataset); dataset = null; } if (fc != null) { //Marshal.ReleaseComObject(fc); fc = null; } if (fieldinfos != null) { //Marshal.ReleaseComObject(fieldinfos); fieldinfos = null; } } }