<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      上一篇中講到XML基本的結構,還有增刪改查的方法,這一篇中我們就來利用XML來完成一個簡單的訂單系統,主要是實現一個簡單學生名單的增刪改查,如果想要應用到實際的環境中建議考慮數據量的問題,如果數據量大使用XML的話會比較耗時,使用SQL的性能會好一些

       

      這里使用WinForm窗體程序,大致界面如下:

       

      1. 創建了兩個窗體,一個主窗體用來顯示名單數據,當添加或者編輯操作時則使用另外一個窗體。
      2. 主窗體中放置四個按鈕,以及一個DataGridView控件,另外一個添加、編輯窗體,則按照相應的字段放置好控件。
      3. 給各控件命好名。

      XML文檔的格式如下:

       1 <?xml version="1.0" encoding="utf-8"?>
       2 
       3 <學生名單>
       4 
       5   <學生 Name="李四一" class="0102">
       6 
       7     <性別></性別>
       8 
       9     <生日>1999年1月2日</生日>
      10 
      11     <學號>20170</學號>
      12 
      13   </學生>
      14 
      15   <學生 Name="張三三" class="高一">
      16 
      17     <性別></性別>
      18 
      19     <學號>0102</學號>
      20 
      21     <生日>2017年6月18日</生日>
      22 
      23   </學生>
      24 
      25 </學生名單>

       學生名單為根元素,班級為根元素中的子元素,班級中又嵌套<學生>標記,了解了數據是以怎么的結構儲存那么下面就繼續。

       

      數據在DataGridView中的顯示
      將XML中的數據,順序顯示在DataGridView控件中
       

       1 //創建一個datatable存儲XML中的數據
       2 
       3 DataTable dt = new DataTable();
       4 
       5 //指定每一列的列名,和數據類型
       6 
       7 dt.Columns.Add("Id", (typeof(System.String)));
       8 
       9 dt.Columns.Add("班級", (typeof(System.String)));
      10 
      11 dt.Columns.Add("姓名", (typeof(System.String)));
      12 
      13 dt.Columns.Add("學號", (typeof(System.String)));
      14 
      15 dt.Columns.Add("生日", (typeof(System.String)));
      16 
      17 dt.Columns.Add("性別", (typeof(System.String)));
      18 
      19 //創建一個DataRow對象
      20 
      21 DataRow dr = dt.NewRow();
      22 
      23  
      24 
      25 XmlDocument doc = new XmlDocument();
      26 
      27 //為相對路徑表示前二級的目錄
      28 
      29 doc.Load(@"..//..//Students.xml");
      30 
      31 XmlElement root = doc.DocumentElement;
      32 
      33 XmlNodeList studentNodes = root.GetElementsByTagName("學生");
      34 
      35 //使用foreach遍歷集合元素
      36 
      37 foreach(var item in studentNodes)
      38 
      39 {
      40 
      41     dr["Id"] = ((XmlElement)item).GetAttribute("Id");
      42 
      43     dr["班級"] = ((XmlElement)item).GetAttribute("Class");
      44 
      45     dr["姓名"] = ((XmlElement)item).GetAttribute("Name");
      46 
      47     dr["學號"] = ((XmlElement)item).GetElementsByTagName("學號")[0].InnerText;
      48 
      49     dr["生日"] = ((XmlElement)item).GetElementsByTagName("生日")[0].InnerText;
      50 
      51     dr["性別"] = ((XmlElement)item).GetElementsByTagName("性別")[0].InnerText;
      52 
      53     dt.Rows.Add(dr);
      54 
      55 }
      56 
      57 //將DataTable綁定到DataGridView控件
      58 
      59 dgvStudents.DataSource = dt;

       

      增加記錄

      因為添加學生和編輯學生都需要在同一個窗體,那么在打開添加或編輯窗體時使用構造函數來傳值,并判斷是編輯還是添加。 

        1 添加編輯窗體代碼:
        2 
        3 public partial class FrmStudentAddandEdit : Form
        4 
        5 {
        6 
        7 //全局變量接受傳值
        8 
        9 bool IsAdd;
       10 
       11 string Name;
       12 
       13     //使用構造函數進行傳值 true為增加,false為編輯
       14 
       15     public FrmStudentAddandEdit(bool isAdd, string name)
       16 
       17 {
       18 
       19 this.IsAdd = isAdd;
       20 
       21 this.Name = name;
       22 
       23         InitializeComponent();
       24 
       25     }
       26 
       27 }
       28 
       29  
       30 
       31 主窗體添加按鈕單擊事件代碼:
       32 
       33 private void btnAdd_Click(object sender, EventArgs e)
       34 
       35 {
       36 
       37 //在創建窗體時傳值
       38 
       39      FrmStudentAddandEdit form = new FrmStudentAddandEdit(true);
       40 
       41      form.ShowDialog();
       42 
       43 }
       44 
       45  
       46 
       47 新增記錄代碼:
       48 
       49 private void btnOK_Click(object sender, EventArgs e)
       50 
       51 {
       52 
       53     XmlDocument doc = new XmlDocument();
       54 
       55     doc.Load(@"..//..//Students.xml");
       56 
       57     XmlElement root = doc.DocumentElement;
       58 
       59     //添加<學生>子節點
       60 
       61     XmlElement Shutdent = doc.CreateElement("學生");
       62 
       63     //設置Name屬性和Class屬性
       64 
       65     Shutdent.SetAttribute("Name", txtName.Text.Trim());
       66 
       67     Shutdent.SetAttribute("Class", txtClass.Text.Trim());
       68 
       69     //創建子節點
       70 
       71     XmlElement eSex = doc.CreateElement("性別");
       72 
       73     XmlText tSex = doc.CreateTextNode(cmbSex.Text.Trim());
       74 
       75     //子節點添加內容
       76 
       77     eSex.AppendChild(tSex);
       78 
       79     //將子節點添加進學生標記
       80 
       81     Shutdent.AppendChild(eSex);
       82 
       83  
       84 
       85     XmlElement eNum = doc.CreateElement("學號");
       86 
       87     XmlText tNum = doc.CreateTextNode(txtNumber.Text.Trim());
       88 
       89     eNum.AppendChild(tNum);
       90 
       91     Shutdent.AppendChild(eNum);
       92 
       93  
       94 
       95     XmlElement eBirthday = doc.CreateElement("生日");
       96 
       97     XmlText tBirthday = doc.CreateTextNode(dtpBirthday.Text.Trim('-'));
       98 
       99     eBirthday.AppendChild(tBirthday);
      100 
      101     Shutdent.AppendChild(eBirthday);
      102 
      103  
      104 
      105     //將<學生>標記添加進根節點
      106 
      107     root.AppendChild(Shutdent);
      108 
      109  
      110 
      111     doc.Save(@"..//..//Students.xml");
      112 
      113 MessageBox.Show("添加成功!");
      114 
      115 this.Close();
      116 
      117 }
      View Code

       

      編輯記錄

      由于編輯需要查找到這條記錄然后復制到控件中顯示,那么在我們啟動”添加或編輯窗體”時需要判斷當前是添加狀態還是編輯狀態,并將表格選擇行的姓名字段傳給構造函數,通過這個姓名字段查找相應的值,然后篩選出來再給控件賦值。 

        1 主窗口編輯按鈕單擊事件:
        2 
        3 private void btnEdit_Click(object sender, EventArgs e)
        4 
        5 {
        6 
        7 //獲取當前選擇表格的行索引
        8 
        9    int dgvIndex = dgvStudents.CurrentRow.Index;
       10 
       11    //根據行索引獲取單元格的值
       12 
       13    string name = dgvStudents.Rows[dgvIndex].Cells["姓名"].Value.ToString();
       14 
       15    FrmStudentAddandEdit form = new FrmStudentAddandEdit(false,name);
       16 
       17    form.ShowDialog();
       18 
       19 }
       20 
       21  
       22 
       23 窗體啟動事件進行判斷是添加還是編輯:
       24 
       25 private void FrmStudentAddandEdit_Load(object sender, EventArgs e)
       26 
       27 {
       28 
       29    if (IsAdd)
       30 
       31    {
       32 
       33       this.Text = "添加學生";
       34 
       35    }
       36 
       37    else
       38 
       39    {
       40 
       41       this.Text = "編輯學生名單";
       42 
       43       XmlDocument doc = new XmlDocument();
       44 
       45       doc.Load(@"..//..//Students.xml");
       46 
       47       XmlElement root = doc.DocumentElement;
       48 
       49       //篩選出符合條件的標記
       50 
       51       XmlElement selectEle = (XmlElement)root.SelectSingleNode("/學生名單/學生[@Name='" + Name + "']");
       52 
       53       //篩選出符合條件并給控件賦值
       54 
       55       txtName.Text = selectEle.GetAttribute("Name");
       56 
       57       txtClass.Text = selectEle.GetAttribute("Class");
       58 
       59       txtNumber.Text = selectEle.GetElementsByTagName("學號")[0].InnerText;
       60 
       61       dtpBirthday.Text = selectEle.GetElementsByTagName("生日")[0].InnerText;
       62 
       63       cmbSex.Text = selectEle.GetElementsByTagName("性別")[0].InnerText;
       64 
       65      }
       66 
       67 }
       68 
       69 同樣在編輯好內容后,單擊確定按鈕后判斷當前是添加狀態還是編輯狀態:
       70 
       71 private void btnOK_Click(object sender, EventArgs e)
       72 
       73 {
       74 
       75    if (IsAdd)
       76 
       77    {
       78 
       79        //添加記錄代碼….
       80 
       81    }
       82 
       83    else
       84 
       85    {
       86 
       87        this.Text = "編輯學生名單";
       88 
       89        XmlDocument doc = new XmlDocument();
       90 
       91        doc.Load(@"..//..//Students.xml");
       92 
       93        XmlElement root = doc.DocumentElement;
       94 
       95        //篩選出符合條件的標記
       96 
       97        XmlElement selectEle = (XmlElement)root.SelectSingleNode("/學生名單/學生[@Name='" + Name + "']");
       98 
       99        selectEle.SetAttribute("Name",txtName.Text.Trim());
      100 
      101        selectEle.SetAttribute("Class",txtClass.Text.Trim());
      102 
      103        //篩選出的對象賦給XMLElement對象
      104 
      105        XmlElement eSex = (XmlElement)selectEle.GetElementsByTagName("性別")[0];
      106 
      107        eSex.InnerText = cmbSex.Text;
      108 
      109        XmlElement eNumber = (XmlElement)selectEle.GetElementsByTagName("學號")[0];
      110 
      111        eNumber.InnerText = txtNumber.Text;
      112 
      113        XmlElement eBirth = (XmlElement)selectEle.GetElementsByTagName("生日")[0];
      114 
      115        eBirth.InnerText = dtpBirthday.Text;
      116 
      117  
      118 
      119        doc.Save(@"..//..//Students.xml");
      120 
      121        MessageBox.Show("修改成功!");
      122 
      123        //這一步很重要一定要關閉窗口不然再次修改會出現不可預料的BUG
      124 
      125        this.Close();
      126 
      127    }
      128 
      129 }
      View Code

       

      刪除記錄

        也是一樣的邏輯獲取當前選擇表格的姓名字段,然后按照相關姓名進行刪除,如果姓名不是唯一字段,那么可以使用ID,每次添加一條記錄的時候最大ID+1

       1 //獲取當前選擇表格的行索引及姓名
       2 
       3 int dgvIndex = dgvStudents.CurrentRow.Index;
       4 
       5 string name = dgvStudents.Rows[dgvIndex].Cells["姓名"].Value.ToString();
       6 
       7 //篩選出符合條件的標記
       8 
       9 XmlElement selectEle = (XmlElement)root.SelectSingleNode("/學生名單/學生[@Name='" + Name + "']");
      10 
      11 //刪除指定子元素
      12 
      13 root.RemoveChild(selectEle);
      14 
      15 doc.Save(“…”);
      16 
      17 //具體代碼省略。。。。。不會的同學可以回到上篇文章。

       

      上面介紹的操作方法是最常使用幾種的,可以使用XML來完成一個數據量比較小的軟件,或者可以用來做軟件的配置文件。

      posted on 2017-06-18 15:48  碼農改變世界lyf  閱讀(3179)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 麟游县| 无码人妻精品一区二区三区下载| 在线亚洲午夜理论av大片| 国产福利社区一区二区| 97国产成人无码精品久久久| 亚洲国产精品久久电影欧美| 依依成人精品视频在线观看| 色综合久久久久综合体桃花网| 免费VA国产高清大片在线| 桓台县| 天天躁日日躁狠狠躁中文字幕| 69天堂人成无码免费视频| 麻江县| 亚洲国产成人一区二区在线| 国产稚嫩高中生呻吟激情在线视频| 伊人精品成人久久综合97| 亚洲AV无码专区亚洲AV桃| 凤凰县| 久久精品免费自拍视频| 成人免费亚洲av在线| 国产人妻久久精品一区二区三区| 在线播放国产精品三级网| 日韩中文字幕国产精品| 少妇被粗大猛进进出出| 女同亚洲精品一区二区三| 特级做a爰片毛片免费看无码| 国产黄色一区二区三区四区| 真实单亲乱l仑对白视频| 国产av一区二区三区精品| www插插插无码免费视频网站| 亚洲熟妇在线视频观看| 中文字幕自拍偷拍福利视频| 国产首页一区二区不卡| 日韩在线视频网| 美国又粗又长久久性黄大片| 国产a在视频线精品视频下载| 久久成人国产精品免费软件| 国产粉嫩系列一区二区三| 青草99在线免费观看| 国产麻豆精品手机在线观看| 亚洲老女人区一区二视频|