2016-10-27 120 views
0

基本上我創建了一個webform讓用戶添加,編輯和刪除現有的xml文件的元素(或記錄),讓用戶將他/她的數據值寫入文本框。當我創建一個按鈕來編輯/更新元素值時,現在的問題就來了。每當這個按鈕被點擊時,用戶將被要求輸入已經存在的學生元素的ID屬性值然後將在我的linq查詢代碼中進行檢查,就好像該ID存在或不存在一樣,並且如果它存在所有其他嵌套元素,則將爲該元素將值打印到所有文本框中。 下面是我的全部代碼和XML文件也:我想更新xml元素的屬性,它的嵌套元素值在C#中

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="xmlCRUD.aspx.cs" Inherits="WebApplication5.xmlCRUD" %> 
 

 
<!DOCTYPE html> 
 

 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 
<head runat="server"> 
 
    <title></title> 
 
</head> 
 
<body> 
 
    <form id="form1" runat="server"> 
 
    <div> 
 
    
 
     &nbsp;&nbsp;&nbsp; 
 
     <br /> 
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student-ID : 
 
     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
 
     <br /> 
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 
     <br /> 
 
&nbsp;&nbsp;&nbsp;&nbsp; Student Name: 
 
     <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
 
     <br /> 
 
     <br /> 
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Gender :<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox> 
 
     <br /> 
 
     <br /> 
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Total Marks : 
 
     <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox> 
 
     <br /> 
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 
     <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Add Student" /> 
 
     <br /> 
 
     <br /> 
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 
     <asp:Button ID="Button2" runat="server" Text="Edit Data" OnClick="Button2_Click" /> 
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 
     <asp:TextBox ID="TextBox5" runat="server" Placeholder="Enter student-ID" Visible="False"></asp:TextBox> 
 
     <br /> 
 
&nbsp;&nbsp; 
 
     <br /> 
 
     <br /> 
 
     <br /> 
 
     <br /> 
 
    
 
    </div> 
 
    </form> 
 
</body> 
 
</html>

using System; 
 
using System.Collections.Generic; 
 
using System.Linq; 
 
using System.Web; 
 
using System.Web.UI; 
 
using System.Web.UI.WebControls; 
 
using System.Xml.Linq; 
 

 
namespace WebApplication5 
 
{ 
 
    public partial class xmlCRUD : System.Web.UI.Page 
 
    { 
 
      
 
     protected void Page_Load(object sender, EventArgs e) 
 
     { 
 

 
     } 
 

 
     protected void Button1_Click(object sender, EventArgs e) 
 
     { 
 
      var student = XElement.Load(@"C:\Users\admin\documents\visual studio 2013\Projects\ClassLibrary1\ClassLibrary1\sample1.xml"); 
 
      student.Add(new XElement("Student", 
 
        new XAttribute("ID", TextBox1.Text), 
 
        new XElement("Name", TextBox2.Text), 
 
        new XElement("Gender", TextBox3.Text), 
 
        new XElement("Marks",TextBox4.Text) 
 
       )); 
 
      student.Save(@"C:\Users\admin\documents\visual studio 2013\Projects\ClassLibrary1\ClassLibrary1\sample1.xml"); 
 
     } 
 

 
     protected void Button2_Click(object sender, EventArgs e) 
 
     { 
 
      Button2.Text = "Update"; 
 
      var student = XElement.Load(@"C:\Users\admin\documents\visual studio 2013\Projects\ClassLibrary1\ClassLibrary1\sample1.xml"); 
 
      string val = from m in student.Elements("Student").Where(x=>x.Attribute("ID").Value == TextBox5.Text).Select(x=>x.Element("Student")); 
 
     } 
 
    } 
 
}

<?xml version="1.0" encoding="utf-8"?> 
 
<Students> 
 
    <Student ID="101"> 
 
    <Name>kamal</Name> 
 
    <Gender>Male</Gender> 
 
    <Marks>800</Marks> 
 
    </Student> 
 
    <Student ID="102"> 
 
    <Name>Sapna</Name> 
 
    <Gender>Female</Gender> 
 
    <Marks>900</Marks> 
 
    </Student> 
 
    <Student ID="103"> 
 
    <Name>Raju</Name> 
 
    <Gender>Male</Gender> 
 
    <Marks>870</Marks> 
 
    </Student> 
 
    <Student ID="104"> 
 
    <Name>Sushant</Name> 
 
    <Gender>Male</Gender> 
 
    <Marks>700</Marks> 
 
    </Student> 
 
    
 
</Students>

請幫助我!

回答

0

與此代碼在編輯按鈕單擊事件函數我這樣做:

protected void Button2_Click(object sender, EventArgs e) 
 
     { 
 
      Button2.Text = "Update"; 
 
      var student = XElement.Load(@"C:\Users\admin\documents\visual studio 2013\Projects\ClassLibrary1\ClassLibrary1\sample1.xml"); 
 
      var val = (from m in student.Elements("Student") 
 
          where (string)m.Attribute("ID") == TextBox5.Text 
 
          select m); 
 
      //XElement a = (XElement)val; 
 
      if (val.Any()) 
 
      { 
 
       foreach (XElement element in val) 
 
       { 
 
        TextBox2.Text = element.Element("Name").Value; 
 
        TextBox3.Text = element.Element("Gender").Value; 
 
        TextBox4.Text = element.Element("Marks").Value; 
 
       } 
 
      } 
 
      else 
 
      { 
 
       Label1.Visible = true; 
 
      } 
 
     }