using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Drawing.Printing; using System.Windows.Forms; using System.Xml; using System.Xml.Linq; using DevComponents.DotNetBar; namespace Cyberpipe { public partial class FrmMetadata : Office2007Form { bool selectedLayer; public FrmMetadata() { InitializeComponent(); loadTreeView(layerTree); } private void loadTreeView(TreeView tv)//构建图层树 { //tv.ShowPlusMinus = false; //tv.Nodes.Clear(); // tv.ImageList = imageList1; tv.ShowLines = true; tv.CheckBoxes = false; TreeUtils.InitLayerTree(null, tv, null); } /// <summary> /// 点击父节点则展开,点击子节点则编辑元数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void layerTree_AfterSelect(object sender, TreeViewEventArgs e) { String layername = e.Node.Text; if (e.Node.GetNodeCount(true) != 0) { //点击父节点,则展开 e.Node.Expand(); return; } searchLayerInfo(layername); selectedLayer = true; clearBtn.Hide(); completeBtn.Hide(); } //查询元数据 private void searchLayerInfo(String layername) { string sql = "select casic_metadatacontent.\"MDABSTRACT\",casic_metadatacontent.\"MDDESCRIPTION\",casic_metadatacontent.\"MDAUTHOR\",casic_metadatacontent.\"NT\" from casic_metadatacontent," + " casic_metadatalayer where casic_metadatacontent.\"LAYERID\" = casic_metadatalayer.\"LAYERID\" and casic_metadatalayer.\"LAYERNAME\"='" + layername+"'"; DataTable table = OledbHelper.QueryTable(sql); if (table != null && table.Rows.Count > 0) { groupBox1.Text = layername; consLblC.Text = table.Rows[0][0].ToString(); descLblC.Text = table.Rows[0][1].ToString(); authorLblC.Text = table.Rows[0][2].ToString(); ntLblC.Text = table.Rows[0][3].ToString(); } else { groupBox1.Text = layername; //MessageBox.Show("没有查到该图层的元数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); consLblC.Text = ""; descLblC.Text = ""; authorLblC.Text = ""; ntLblC.Text = ""; } consTxt.Visible = false; descTxt.Visible = false; authorTxt.Visible = false; ntTxt.Visible = false; consLblC.Visible = true; descLblC.Visible = true; authorLblC.Visible = true; ntLblC.Visible = true; } //导出元数据 private void printBtn_Click(object sender, EventArgs e) { //printDialog1.ShowDialog(); //用默认的所有者使用通用对话框 //printPreviewDialog1.Document = this.printDocument1; //设置打印文档 //printPreviewDialog1.ShowDialog(); //if (printDialog1.ShowDialog() == DialogResult.OK) //{ // printDocument1.Print(); //} //导出xml文件 XDocument doc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), new XElement("metadata", new XElement("cons", consLblC.Text), new XElement("desc", descLblC.Text), new XElement("author", authorLblC.Text), new XElement("nt", ntLblC.Text))); FrmMetadataOutput FrmOut = new FrmMetadataOutput(doc,groupBox1.Text);//实例化Frm_Folder窗体 FrmSetUp(FrmOut);//调用自定义方法FrmSetUp,对Frm_Radical窗体进行设置 if (FrmOut.ShowDialog() == DialogResult.OK)//显示窗体 { MessageBox.Show("导出成功"); } } public void FrmSetUp(Form Frm) //Form或MouseEventArgs添加命名空间using System.Windows.Forms; { Frm.StartPosition = FormStartPosition.CenterScreen;//使窗体居中 } //导入元数据 private void importBtn_Click(object sender, EventArgs e) { //日志记录 LogManager.saveLog(Utility.userName,"元数据"+ importBtn.Text); //判断此时layerTree有没有选中的图层 if (selectedLayer)//有选中的图层,获得其名 { OpenFileDialog dlg = new OpenFileDialog(); dlg.Filter = "支持格式(*.xml)|*.xml|XML数据(*.xml)|"; dlg.Multiselect = true; if (dlg.ShowDialog() == DialogResult.OK) { AddXMLMDdata(dlg.FileName); } } else { MessageBox.Show("请选择一个要导入元数据的图层"); } } //读入元数据 private void AddXMLMDdata(string strFilePath) { DataSet dataSet = new DataSet(); dataSet.ReadXml(strFilePath); //读取XML文件中的内容 //string attrtitle = dataSet.Tables[0].Rows[0][0].ToString(); string attrcons = dataSet.Tables[0].Rows[0][0].ToString(); string attrdesc = dataSet.Tables[0].Rows[0][1].ToString(); string attrauthor = dataSet.Tables[0].Rows[0][2].ToString(); string attrnt = dataSet.Tables[0].Rows[0][3].ToString(); //this.titleLbl.Text = attrtitle; consLblC.Text = attrcons; descLblC.Text = attrdesc; authorLblC.Text = attrauthor; ntLblC.Text = attrnt; //MessageBox.Show(attrtitle + "==" + attrcons + "==" + attrdesc + "==" + attrauthor + "==" + attrnt); completeBtn.Visible = true; //this.clearBtn.Visible = true; } //新建/编辑元数据 private void editBtn_Click(object sender, EventArgs e) { consTxt.Visible = true; descTxt.Visible = true; authorTxt.Visible = true; ntTxt.Visible = true; completeBtn.Visible = true; clearBtn.Visible = true; consTxt.Text = consLblC.Text; descTxt.Text = descLblC.Text; authorTxt.Text = authorLblC.Text; ntTxt.Text = ntLblC.Text; consLblC.Visible = false; descLblC.Visible = false; authorLblC.Visible = false; ntLblC.Visible = false; } //提交新建/编辑 private void completeBtn_Click(object sender, EventArgs e) { //判断是新建还是编辑 if (searchLayer(groupBox1.Text)) { //MessageBox.Show("new"); if (consLblC.Visible && (consTxt.Visible == false))//提交xml文件时新建 { saveData("new", groupBox1.Text, consLblC.Text, descLblC.Text, authorLblC.Text, ntLblC.Text); } else { saveData("new", groupBox1.Text, consTxt.Text, descTxt.Text, authorTxt.Text, ntTxt.Text); } }else{ //MessageBox.Show("update"); if (consLblC.Visible && (consTxt.Visible == false))//提交xml文件时更新 { saveData("update", groupBox1.Text, consLblC.Text, descLblC.Text, authorLblC.Text, ntLblC.Text); } else { //直接修改更新 saveData("update", groupBox1.Text, consTxt.Text, descTxt.Text, authorTxt.Text, ntTxt.Text); } } consTxt.Visible = false; descTxt.Visible = false; authorTxt.Visible = false; ntTxt.Visible = false; completeBtn.Visible = false; clearBtn.Visible = false; consLblC.Visible = true; descLblC.Visible = true; authorLblC.Visible = true; ntLblC.Visible = true; } //判断是新建还是编辑 private bool searchLayer(string layername) { string sql = "select \"LAYERID\" from casic_metadatalayer where \"LAYERNAME\" = '" + layername + "'"; DataTable table = OledbHelper.QueryTable(sql); return table == null || table.Rows.Count <= 0; } //保存元数据 private void saveData(String method,String layername,String cons,String desc,String author,String nt) { if (method.Equals("new"))//插入 { string searchSQL = "select \"LAYERID\" from casic_metadatalayer order by \"LAYERID\" desc"; DataTable table = OledbHelper.QueryTable(searchSQL); int layerid = 0; if (table.Rows.Count > 0) { int num = Convert.ToInt32(table.Rows[0][0].ToString()); layerid = num + 1; } else { layerid = 1; } //MessageBox.Show(layerid.ToString()); string insertSQL = "insert into casic_metadatalayer values ('" + layerid + "','" + layername + "')";//+ string insertSQL2 = "insert into casic_metadatacontent values ('" + layerid + "','" + cons + "','" + desc + "','" + author + "','" + nt + "')"; // "insert into casic_metadatacontent values ('" + layerid + "','" + cons + "','"+desc+"','"+author+"','"+nt+"')"; if ((OledbHelper.sqlExecuteNonQuery(insertSQL) <= 0) || (OledbHelper.sqlExecuteNonQuery(insertSQL2) <= 0)) return; MessageBox.Show("保存元数据成功!"); consLblC.Text = cons; descLblC.Text = desc; authorLblC.Text = author; ntLblC.Text = nt; //DialogResult = DialogResult.OK; //Close(); } else { //更新 string layeridSQL = "select layerid from casic_metadatalayer where LAYERNAME='"+layername+"'"; DataTable table = OledbHelper.QueryTable(layeridSQL); string layerid = table.Rows[0][0].ToString(); string updateSQL = "update casic_metadatacontent set casic_metadatacontent.MDABSTRACT ='" + cons.Trim() + "',casic_metadatacontent.MDDESCRIPTION ='" + desc.Trim() + "',casic_metadatacontent.MDAUTHOR ='" + author.Trim() + "',casic_metadatacontent.NT ='" + nt.Trim() + "' where casic_metadatacontent.LAYERID='" + layerid + "'"; if (OledbHelper.sqlExecuteNonQuery(updateSQL) <= 0) return; MessageBox.Show("更新元数据成功!"); consLblC.Text = cons; descLblC.Text = desc; authorLblC.Text = author; ntLblC.Text = nt; //DialogResult = DialogResult.OK; //Close(); } } //清空元数据内容,但不删除该图层 private void clearBtn_Click(object sender, EventArgs e) { consTxt.Text = ""; descTxt.Text = ""; authorTxt.Text = ""; ntTxt.Text = ""; string layername = groupBox1.Text;//this.titleLbl.Text; string clearSQL = "update casic_metadatacontent set MDABSTRACT ='" + consTxt.Text.Trim() + "',MDDESCRIPTION ='" + descTxt.Text.Trim() + "',MDAUTHOR ='" + authorTxt.Text.Trim() + "',NT ='" + ntTxt.Text.Trim() + "' where LAYERID in (select LAYERID from casic_metadatalayer where LAYERNAME='" + layername + "')"; if (OledbHelper.sqlExecuteNonQuery(clearSQL) > 0) { MessageBox.Show("清空元数据成功!"); //DialogResult = DialogResult.OK; //Close(); } } //设置打印窗口 private void printDocument1_PrintPage(object sender, PrintPageEventArgs e) { //绘制label1中的内容 e.Graphics.DrawString(groupBox1.Text+"元数据", new Font("宋体", 20, FontStyle.Regular), Brushes.Black, 350, 10); //绘制textBox1中的内容 e.Graphics.DrawString(consLbl.Text, new Font("宋体", 15, FontStyle.Bold), Brushes.Black, 10, 100); e.Graphics.DrawString(consLblC.Text, new Font("宋体", 15, FontStyle.Regular), Brushes.Black, 10, 120); //绘制label3中的内容 e.Graphics.DrawString(descLbl.Text, new Font("宋体", 15, FontStyle.Bold), Brushes.Black, 10, 200); e.Graphics.DrawString(descLblC.Text, new Font("宋体", 15, FontStyle.Regular), Brushes.Black,10, 220); //绘制textBox2中的内容 e.Graphics.DrawString(authorLbl.Text, new Font("宋体", 15, FontStyle.Bold), Brushes.Black, 10, 300); e.Graphics.DrawString(authorLblC.Text, new Font("宋体", 15, FontStyle.Regular), Brushes.Black, 10, 320); //绘制label3中的内容 e.Graphics.DrawString(ntLbl.Text, new Font("宋体", 15, FontStyle.Bold), Brushes.Black, 10, 400); e.Graphics.DrawString(ntLblC.Text, new Font("宋体", 15, FontStyle.Regular), Brushes.Black, 10, 420); } private void 删除ToolStripMenuItem_Click(object sender, EventArgs e) { consLblC.Text = ""; descLblC.Text = ""; authorLblC.Text = ""; ntLblC.Text = ""; string layername = groupBox1.Text; string clearSQL1 = "delete casic_metadatacontent where \"LAYERID\" in(select \"LAYERID\" from casic_metadatalayer where \"LAYERNAME\"= '" + layername + "')"; string clearSQL2 = "delete casic_metadatalayer where \"LAYERNAME\"= '" + layername + "'"; OledbHelper.getsqlcom(clearSQL1); OledbHelper.getsqlcom(clearSQL2); MessageBox.Show("删除元数据成功!"); } } }