آموزش چهار عمل اصلی (CRUD) با استفاده از LINQ To XML

دوشنبه 6 مهر 1394

در این مقاله قصد داریم در تکنولوژی asp به پیاده سازی چهار عمل اصلی افزودن ، ویرایش، حذف و انتخاب رکورد با استفاده از Linq to XMl بپردازیم.

آموزش چهار عمل اصلی (CRUD)  با استفاده از LINQ To XML

XMl یک زبان نشانه گذاری یا به عبارتی  Markup Languag است این زبان برای ذخیره و انتقال داده به کار میرود یکی از ویژگی های زبان های نشانه گذاری پشتیبانی کامل از همه زبان ها و مخصوصا زبان فارسی است.

طریقه تعریف یک سند Xml:

برای استفاده از یک سند Xml  کافی است قطعه کد زیر را در بالای صفحه خود بنویسیم

    <?XML version="1.0" encoding="UTF-8"?>  

قبل از شروع کار لازم است این نکته را خاطر نشان کنم که همان طور در بالا گفته شد زبان XMl  مانند Html یک زبان نشانه گذاری است اما تفاوت این دوزبان در آن است که زبان Html یک زبان برای نمایش است ولی زبان Xml  یک سند برای نگهداری و انتقال اطلاعات میباشد.

شرح مطالبی که در این مقاله به آن میپردازیم

1) ایجاد یک سند XMl  و درج اطلاعات در آن

2) پیاده سازی چهار عمل اصلی با استفاده از LINQ To XML

برای ایجاد یک سند xml راه های زیادی وجود دارد به عنوان مثال شما میتوانید یک Notepad  باز کرده و

اطلاعات خود را به صورت یک سند نشانه گذاری ذخیره کنید یا میتوان ویژوال استادیو را باز کرده در Add<NewItem < Xml  را جستجو کرده و مانند زیر در xml file  یک سند xml ایجاد کنید

حال زیر سند Xml خود را تعریف میکنیم

<?xml version="1.0" encoding="utf-8"?>
<Employess>
  <Employee>
    <id>101</id>
    <name>علی </name>
    <salary>100000</salary>
    <email>ali@gmail.com</email>
    <address>ایران </address>
  </Employee>
  <Employee>
    <id>102</id>
    <name>ایمان </name>
    <salary>12000</salary>
    <email>Amit@gmail.com</email>
    <address>ایران</address>
  </Employee>
  <Employee>
    <id>120</id>
    <name> محمد </name>
    <salary>1500</salary>
    <email>Surya</email>
    <address>ایران</address>
  </Employee>
  <Employee>
    <id>105</id>
    <name>سجاد </name>
    <salary>150000</salary>
    <email>Surya</email>
    <address>ایران</address>
  </Employee>
  <Employee>
    <id>105</id>
    <name>امیر</name>
    <salary>4522</salary>
    <email>ss@gmail.com</email>
    <address>ایران</address>
  </Employee>
  <Employee>
    <id>103</id>
    <name>تقی </name>
    <salary>12000</salary>
    <email>surya@gmail.com</email>
    <address>ایران</address>
  </Employee>
</Employess>

ابتدا ویژوال استادیو را باز کرده و یک پروژه از نوع Asp.Net  ایجاد میکنم

و روی پروژه  راست کلیک کرده و یک WebForm  ایجاد میکنیم

و سپس فرم خود را به صورت زیر طراحی میکنیم و این نکته را خاطر نشان کنم اطلاعات گرید از سند XMl پر میشود

 

لازم بذکر است برای کار با سند XMl  فضای نام System.XML.LINQ; را به برنامه اضافه کنید

در قسمت کد ، یک تابع برای پر کردن اطلاعات گرید به نام BindGrid  ایجاد میکنیم

XDocument xmldoc;        
public void BindGrid()  
{  
    xmldoc = XDocument.Load("D:/Emp12.xml");   //add xml document  
    var bind = xmldoc.Descendants("Employee").Select(p => new  
    {  
        Id=p.Element("id").Value,  
        Name=p.Element("name").Value,  
        Salary=p.Element("salary").Value,  
        Email=p.Element("email").Value,  
         Address=p.Element("address").Value  
    }).OrderBy(p=>p.Id);  
    GridView1.DataSource = bind;  
    GridView1.DataBind();  
}  
protected void Page_Load(object sender, EventArgs e)  
{  
    BindGrid();  
}  

 

 و تابع را در Load  صفحه برای بروز رسانی گرید فرا خوانی میکنیم

 

حال برای افزودن روی دکمه افرودن دوبار کلیک کرده تا متد click آن فرا خوانی شود

    protected void Insert_Click(object sender, EventArgs e)  
    {  
        XElement emp = new XElement("Employee",  
            new XElement("id", txtid.Text),  
            new XElement("name", txtname.Text),  
            new XElement("salary",txtsalary.Text),  
            new XElement("email",txtemail.Text),  
            new XElement("address", txtaddress.Text));  
        xmldoc.Root.Add(emp);  
        xmldoc.Save("D:/Emp12.xml");  
        BindGrid();  
        Reset(); // For clear textbox  
      
    }  

برای پاک کردن اطلاعات پر شده یک تابع به نام reset نوشته و در انتهای ویرایش و افزودن صدا میزنیم

    private void Reset()  
      {  
          txtid.Text = "";  
          txtname.Text = "";  
          txtsalary.Text = "";  
          txtaddress.Text = "";  
          txtemail.Text = "";  
          txtid.Focus();  
      }  

 

حال برای پیدا کردن اطلاعات هر ردیف از گرید برای ویرایش تابعی به نام find  مینویسیم

    protected void Find(object sender, EventArgs e)  
    {  
        XElement emp = xmldoc.Descendants("Employee").FirstOrDefault(p => p.Element("id").Value == txtid.Text);  
        if (emp != null)  
        {  
            txtname.Text = emp.Element("name").Value;  
            txtsalary.Text = emp.Element("salary").Value;  
            txtemail.Text = emp.Element("email").Value;  
            txtaddress.Text = emp.Element("address").Value;  
             
        }  
    }  

 

حال برای ویرایش هر ردیف از گرید در رویداد کلیک دکمه ویرایش کدهای زیر را مینویسیم

protected void Update_click(object sender, EventArgs e)  
{  
  
    XElement emp = xmldoc.Descendants("Employee").FirstOrDefault(p => p.Element("id").Value == txtid.Text);  
    if (emp != null)  
    {  
        emp.Element("name").Value = txtname.Text;  
        emp.Element("salary").Value = txtsalary.Text;  
        emp.Element("email").Value = txtemail.Text;  
        emp.Element("address").Value = txtaddress.Text;  
        xmldoc.Root.Add(emp);  
        xmldoc.Save("D:/Emp12.xml");  
        BindGrid();  
        Reset();  
  
    }  
}

 

و در انتها برای حذف از کدهای زیر استفاده میکنیم

    protected void delete_click(object sender, EventArgs e)  
    {  
        XElement emp = xmldoc.Descendants("Employee").FirstOrDefault(p => p.Element("id").Value == txtid.Text);  
        if (emp != null)  
        {  
            emp.Remove();  
            xmldoc.Save("D:/Emp12.xml");  
            BindGrid();  
            Reset();  
        }  
    }  

 

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید