public void Load(IPersistStream stream) { _type = (NodeType)stream.Load("Type", (int)NodeType.query); if (_type == NodeType.query) { base.Text = (string)stream.Load("Name", ""); _table = stream.Load("PromptDefs", null, new QueryThemePromptDef()) as QueryThemePromptDef; if (_table == null) { _table = new QueryThemePromptDef(); } base.ImageIndex = base.SelectedImageIndex = 0; while (true) { QueryThemeTable tabNode = stream.Load("Table", null, new QueryThemeTable()) as QueryThemeTable; if (tabNode == null) { break; } Nodes.Add(tabNode); } } else { base.ImageIndex = base.SelectedImageIndex = 1; } }
private void StoreFieldDefs() { if (_actTableNode == null) { return; } QueryTheme theme = _actTableNode.Parent as QueryTheme; if (theme == null || theme.PromptDef == null) { return; } DataTable table = _actTableNode.QueryFieldDef; table.Rows.Clear(); for (int i = 0; i < dgLayers.Rows.Count - 1; i++) { DataGridViewRow dgRow = dgLayers.Rows[i]; DataRow[] rows = theme.PromptDef.Select("Prompt='" + dgRow.Cells[1].Value + "'"); if (rows.Length == 0) { continue; } table.Rows.Add( new object[] { dgRow.Cells[0].Value, rows[0]["ID"], dgRow.Cells[2].Value }); } IFeatureLayer fLayer = _actTableNode.GetLayer(_doc) as IFeatureLayer; if (fLayer != null && fLayer.Fields != null && _actTableNode.VisibleFieldDef != null) { _actTableNode.VisibleFieldDef.UseDefault = chkUseStandard.Checked; _actTableNode.VisibleFieldDef.PrimaryDisplayField = cmbPrimaryField.Text; table = _actTableNode.VisibleFieldDef; table.Rows.Clear(); foreach (IField field in fLayer.Fields.ToEnumerable()) { for (int i = 0; i < dgVisibleFields.Rows.Count; i++) { if ((string)dgVisibleFields.Rows[i].Cells[1].Value == field.name && ((string)dgVisibleFields.Rows[i].Cells[2].Value != field.aliasname || (bool)dgVisibleFields.Rows[i].Cells[0].Value == true)) { table.Rows.Add( new object[] { (bool)dgVisibleFields.Rows[i].Cells[0].Value, field.name, (string)dgVisibleFields.Rows[i].Cells[2].Value }); } } } } _actTableNode = null; }
private void btnAddTable_Click(object sender, EventArgs e) { QueryTheme parent = treeQueries.SelectedNode as QueryTheme; if (parent == null) { return; } FormSelectLayer selLayer = new FormSelectLayer(_doc); if (selLayer.ShowDialog() == DialogResult.OK) { if (selLayer.SelectedLayer == null) { return; } QueryThemeTable node = new QueryThemeTable(selLayer.SelectedLayer, selLayer.SelectedLayerAlias); parent.Nodes.Add(node); parent.Expand(); } }
private void treeQueries_AfterSelect(object sender, TreeViewEventArgs e) { btnAddTable.Enabled = treeQueries.SelectedNode is QueryTheme && ((QueryTheme)treeQueries.SelectedNode).Type == QueryTheme.NodeType.query; tabControlLayers.Visible = treeQueries.SelectedNode is QueryThemeTable; dgQueries.Visible = treeQueries.SelectedNode is QueryTheme; TreeNode node = treeQueries.SelectedNode; if (node is QueryTheme) { StoreFieldDefs(); DataTable tab = ((QueryTheme)node).PromptDef; dgQueries.DataSource = tab; } else if (node is QueryThemeTable) { #region Query Fields StoreFieldDefs(); dgLayers.Rows.Clear(); IFeatureLayer layer = ((QueryThemeTable)node).GetLayer(_doc) as IFeatureLayer; if (layer != null) { colField.Items.Clear(); if (layer.Fields != null) { foreach (IField field in layer.Fields.ToEnumerable()) { colField.Items.Add(field.name); } } } QueryTheme theme = node.Parent as QueryTheme; if (theme == null && theme.PromptDef == null) { return; } colPrompt.Items.Clear(); foreach (DataRow row in theme.PromptDef.Select()) { colPrompt.Items.Add(row["Prompt"].ToString()); } foreach (DataRow row in ((QueryThemeTable)node).QueryFieldDef.Rows) { try { string field = row["Field"].ToString(); string op = row["Operator"].ToString(); int promptID = (int)row["Prompt"]; if (colField.Items.IndexOf(field) == -1) { field = ""; } if (colOperator.Items.IndexOf(op) == -1) { op = ""; } DataRow[] rows = theme.PromptDef.Select("ID=" + promptID); if (rows.Length == 0) { continue; } dgLayers.Rows.Add( new object[] { field, rows[0]["Prompt"], op }); } catch { } } #endregion #region Visible Fields if (((QueryThemeTable)node).VisibleFieldDef != null && layer != null && layer.Fields != null) { QueryThemeVisibleFieldDef visFields = ((QueryThemeTable)node).VisibleFieldDef; chkUseStandard.Checked = visFields.UseDefault; cmbPrimaryField.Items.Clear(); dgVisibleFields.Rows.Clear(); foreach (IField field in layer.Fields.ToEnumerable()) { cmbPrimaryField.Items.Add(field.name); if (field.name == visFields.PrimaryDisplayField || (visFields.PrimaryDisplayField == "" && layer.Fields.PrimaryDisplayField != null && field.name == layer.Fields.PrimaryDisplayField.name)) { cmbPrimaryField.SelectedIndex = cmbPrimaryField.Items.Count - 1; } DataRow[] r = visFields.Select("Name='" + field.name + "'"); if (r.Length == 1) { dgVisibleFields.Rows.Add(new object[] { (bool)r[0]["Visible"], field.name, (string)r[0]["Alias"], field.type.ToString() }); } else { dgVisibleFields.Rows.Add(new object[] { false, field.name, field.aliasname, field.type.ToString() }); } } } #endregion _actTableNode = node as QueryThemeTable; } }