Làm việc với XML trên Gridview [asp.net - c#] Bài viết này sẽ giới thiệu đến các bạn cách thức làm việc cơ bản trên XML , add , edit , delete data trên gridview.. xem qua demo để hiểu hơ
Trang 1Làm việc với XML trên Gridview [asp.net - c#]
Bài viết này sẽ giới thiệu đến các bạn cách thức làm việc cơ bản trên XML
, add , edit , delete data trên gridview
xem qua demo để hiểu hơn nội dung bài viết
Giải thích về demo:
Khi trang web được load thì data sẽ được load vào gridview , khi click vào dòng nào trên gridview thì data sẽ được bind vào textbox , sau đó chúng ta có thể sửa , xóa data
và update lại database Điều đặc biệt ở đây chính là ở chỗ file chứa data có đuôi
dạng xml , chứ không phải data được lưu trong access hay sql server
Các bước thực hiện :
1: Thiết kế giao diện : (như hình demo ở trên)
Kéo vào trang web 1 gridview đặt tên Gridview1
4 cái label và ghi First Name , Last Name , Email , PHone
4 textbox : txtFname, txtLname,txtEmail,txtPhone
4 cái button : btnAdd , btnModify, btnDElete, btnClear
Click vào dấu tam giác nhỏ của gridview và click edit Columns và click tiếp Command Filed và chọn Select click OK để hoàn tất ( Mục đích là add thêm nút select trên
Gridview mà thôi )
2: Tạo 1 file data có đuôi xml
Ta sẽ tạo 1 file data có đuôi xml trên đó có dữ liệu chúng ta muốn thể hiện trên
Gridview, data như thế nào thì tùy thuộc vào yêu cầu cụ thể của các bạn Trong bài ví dụ
này file.xml có tên testXML_Q7.xml bao gồm First Name , Last
Name , Email , Phone
nội dung của file cụ thể như sau :
<?xml version=”1.0″ encoding=”utf-8″?>
<data>
<contact>
<fname>CVTX 2</fname>
<lname>Nguyen</lname>
<email>ds@email.net</email>
<phone>2312</phone>
</contact>
<contact>
<fname>CVTX 2</fname>
<lname>Nguyen</lname>
<email>ds@email.net</email>
<phone>435t345</phone>
</contact>
<contact>
<fname>PA</fname>
<lname>Doan</lname>
<email>ds@email.net</email>
<phone>435t345</phone>
</contact>
<contact>
<fname>Huong</fname>
<lname>Doan</lname>
<email>ds@email.net</email>
<phone>5645654</phone>
</contact>
<contact>
<fname>Hung</fname>
<lname>Le</lname>
<email>ds@dfbvdfbdf.com</email>
<phone>5645654</phone>
Trang 2</contact>
</data>
3: Load file testXML_Q7.xml vào GridView
Ta viết code trong sự kiện pageLoad :
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack )
{
loadXmlData();
}
}
Để có thể sử dụng lại nên chúng ta nên viết riêng 1 hàm load data riêng (ví
dụ loadXmlData();)
Hàm loadXmlData(); có code như sau: các bạn nhớ add thêm nameSpace vào phần đầu
tiên của trang : using System.Xml;
private void loadXmlData()
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath(@”testXML_Q7.xml”));
if (ds.Tables.Count > 0)
{
this.GridView1.DataSource = ds;
this.GridView1.DataBind();
}
}
Đến đây data đã được load lên Gridview Hãy view với browser FF hoặc IE
4: Viết code cho các button (edit,add,delete,clear)
- Code cho sự kiện : Select click đúp vào Gridview avf viết code như sau
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
a = this.GridView1.SelectedIndex;
FindXmlData(a); //gọi hàm FindXmlData
}
Hàm FindXmlData :
private void FindXmlData(int a)
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath(@”testXML_Q7.xml”)) ;
XmlNodeList xmlnodelist = xmldoc.DocumentElement.ChildNodes;
XmlNode xmlnode = xmlnodelist.Item(a);
this.txtFname.Text = xmlnode["fname"].InnerText;
this.txtLname.Text = xmlnode["lname"].InnerText;
this.txtEmail.Text = xmlnode["email"].InnerText;
this.txtPhone.Text = xmlnode["phone"].InnerText;
}
- Code cho button btnClear:
protected void btnClear_Click(object sender, EventArgs e)
{
reset();
}
Code cho hàm reset():
Trang 3private void reset()
{
this.txtFname.Text = “”;
this.txtLname.Text = “”;
this.txtEmail.Text = “”;
this.txtPhone.Text = “”;
}
- Code cho btnModify :
protected void btnModify_Click(object sender, EventArgs e)
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath(@”testXML_Q7.xml”)) ;
XmlNode xmlnode = xmldoc.DocumentElement.ChildNodes.Item(a);
xmlnode["fname"].InnerText = this.txtFname.Text.Trim();
xmlnode["lname"].InnerText = this.txtLname.Text.Trim();
xmlnode["email"].InnerText = this.txtEmail.Text.Trim();
xmlnode["phone"].InnerText = this.txtPhone.Text.Trim();
xmldoc.Save(Server.MapPath(@”testXML_Q7.xml”)) ;
loadXmlData();
}
- Code cho btnDelete:
protected void btnDelete_Click(object sender, EventArgs e)
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath(@”testXML_Q7.xml”)) ;
XmlNode xmlnode = xmldoc.DocumentElement.ChildNodes.Item(a);
xmlnode.ParentNode.RemoveChild(xmlnode);
xmldoc.Save(Server.MapPath(@”testXML_Q7.xml”)) ;
loadXmlData();
reset();
}