2017-07-26 62 views
0

xmlを使用して編集モードでグリッドを更新しようとしていますが、できません。私はの編集モードごとに、グリッド内のデータを開くとC#で編集モードでXMLファイルを編集する方法

私が唯一の要素を編集することができていますが、複数の

私のxmlファイルを編集する方法を知らないが

<CATALOG> 
    <CD> 
    <ID>1</ID> 
    <Application>Dot Net</Application> 
    <status>Available</status> 
    <LastUpdate>02-07-2017</LastUpdate> 
    <Comments>The Rox for July has been loaded</Comments> 
    </CD> 
    <CD> 
    <ID>2</ID> 
    <Application>JFORWBK</Application> 
    <status>Available</status> 
    <LastUpdate>05-07-2017</LastUpdate> 
    <Comments>DeLorean data has been loaded</Comments> 
    </CD> 
    <CD> 
    <ID>3</ID> 
    <Application>Codepress</Application> 
    <status>Open for Input</status> 
    <LastUpdate>06-07-2017</LastUpdate> 
    <Comments>The Rox for July has been loaded</Comments> 
    </CD> 
</catalog> 

以下のようになります。 idを1つの要素で更新できるよりも

隠しフィールドに値がある場合、すべての要素を一度に更新するにはどうすればよいですか。

私はid.Iに基づいて私のXML要素を更新することができる午前は1時間に1つの要素を更新することができています。..

コードを次のように

ID = Request.QueryString["sID"]; 
        XmlDocument xmlDoc = new XmlDocument(); 
        string filepathsUpdate = Server.MapPath("Action.xml"); 
        xmlDoc.Load(filepathsUpdate); 
        XmlNode node = xmlDoc.SelectSingleNode("/CATALOG/CD[ID=" + ID + "]/Action"); 
        node.InnerText = ssplit[0]; 
        xmlDoc.Save(filepathsUpdate); 

を今どのようにアップデートしますサーバー側のC#の更新ボタンをクリックすると編集モードでコメントが表示されます。

答えて

0

XmlNodeListを使用して、そのリスト内の各XmlNodeに対して反復処理を行い、更新を実行できます。

メモリは、それはあなたがそれらをのように一つ一つを更新するために、ループを使用していないのはなぜ

foreach(XmlNode node in XmlDoc.selectNodes("nodename")){node.innerText = "updated value here";} 
0

の線に沿ってあるべき提供している場合。

すべての非表示フィールド値をIdsリストに入れてください。次に、ループを使用してXMLを更新します。 LINQでは

List<int> Ids = new List<int>(); 
Ids.Add(1); 

for (int i = 0; i < Ids.Count; i++) 
{ 
    ID = Request.QueryString["sID"]; 
    XmlDocument xmlDoc = new XmlDocument(); 
    string filepathsUpdate = Server.MapPath("Action.xml"); 
    xmlDoc.Load(filepathsUpdate); 
    XmlNode node = xmlDoc.SelectSingleNode("/CATALOG/CD[ID=" + Ids[i].ToString() + "]/Action"); 
    node.InnerText = ssplit[0]; 
    xmlDoc.Save(filepathsUpdate); 
} 
1

それをXMLに非常に簡単です:

var id = Request.QueryString["sID"]; 
XDocument doc = XDocument.Load("Action.xml"); 
var catalogDescendants = doc.Descendants("CATALOG"); 
foreach (var cd in catalogDescendants) 
{ 
    //you can update the id here for whatever you want 
    cd.Element("ID").Value = id; 
} 
関連する問題