WPF 保存DataGrid到XML

XML

<Tree>
  <Item>
    <编号>编号</编号>
    <树冠>树冠半径</树冠>
    <树干>树干直径</树干>
    <树龄>树龄</树龄>
    <古树等级>古树等级</古树等级>
  </Item>
  <Item>
    <编号>T1</编号>
    <树冠>3.3m</树冠>
    <树干>22cm</树干>
    <树龄 />
    <古树等级 />
  </Item>
  <Item>
    <编号>T2</编号>
    <树冠>2.5m</树冠>
    <树干>20cm</树干>
    <树龄 />
    <古树等级 />
  </Item>
  </Tree>

保存按钮,点击事件

  <Button Name="btSaveTree" BorderThickness="0" Width="32" Height="32"  ToolTip="保存"  Style="{StaticResource ButtonMouseOver}" Click="BtSaveTree_Click">
                                    <Button.Background>
                                        <ImageBrush ImageSource="img/PopUp/保存.png" />
                                    </Button.Background>
                                </Button>

在这里插入图片描述

 private void BtSaveTree_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                saveData.SaveTree(this);

            }
            catch (Exception)
            {
                return;
            }
        }
 class SaveData
    {
        BindingList<DataTree> dList = new BindingList<DataTree>();
        XmlWriter write;
        //保存数据,在界面修改数据,点击保存按钮保存数据,XML更新保存
        public void SaveTree(MainWindow mainWindow)
        {
            string tvData = mainWindow.tvData.ToString();
            DataTable dt = new DataTable();
            dt = ((DataView)mainWindow.dgTree.ItemsSource).Table;

            dList.Clear();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                dList.Add(new DataTree(dt.Rows[i][0].ToString(), dt.Rows[i][1].ToString(), dt.Rows[i][2].ToString(), dt.Rows[i][3].ToString(), dt.Rows[i][4].ToString()));
            }
            string filePath = System.Windows.Forms.Application.StartupPath + "/Resource/XML/" + tvData + "/" + tvData + ".xml";

            string path = filePath;
            //读取到DataGrid内的值后,存储到XML中
            XmlWriterSettings setting = new XmlWriterSettings();
            //指定的输入或输出检查的量 XmlReader 和 XmlWriter 对象执行
            setting.ConformanceLevel = ConformanceLevel.Auto;
            setting.Indent = true;//是否缩进
            setting.Encoding = new UTF8Encoding(false);

            write = XmlWriter.Create(path, setting);
            write.WriteStartElement("Tree");
            foreach (var s in dList)
            {
                //Console.WriteLine("值" + s.ItemName + " " + s.Infor+ " " + s.QTY);
                saveContent(s);
            }
            write.Close();
            MessageBoxTimeoutA((IntPtr)0, "保存成功", "", 0, 0, 500); // 直接调用 500毫秒后自动关闭
        }
        [DllImport("user32.dll")]
        public static extern int MessageBoxTimeoutA(IntPtr hWnd, string msg, string Caps, int type, int Id, int time); //引用DLL
        public void saveContent(DataTree s)
        {
            write.WriteStartElement("Item");
            write.WriteElementString("编号", s.Number);
            write.WriteElementString("树冠", s.Crown);
            write.WriteElementString("树干", s.Trunk);
            write.WriteElementString("树龄", s.Age);
            write.WriteElementString("古树等级", s.Grade);
            write.WriteEndElement();
            write.Flush();
        }
    }
class DataTree
    {

        private string number;
        public string Number
        {
            get { return number; }
            set { number = value; }
        }
        private string crown;
        public string Crown
        {
            get { return crown; }
            set { crown = value; }
        }
        private string trunk;
        public string Trunk
        {
            get { return trunk; }
            set { trunk = value; }
        }
        private string age;
        public string Age
        {
            get { return age; }
            set { age = value; }
        }
        private string grade;
        public string Grade
        {
            get { return grade; }
            set { grade = value; }
        }
        public DataTree() { }
        public DataTree(string number,string crown, string trunk, string age,string grade)
        {
            Number = number;
            Crown = crown;
            Trunk = trunk;
            Age = age;
            Grade = grade;
        }
    }
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值