本帖最后由 zhouzhoumin0 于 2010-05-09 14:58:36 编辑

解决方案 »

  1.   

    读取XML数据到dataset,设置datagrid绑定的字段ID,problem
    在 winform中可单击单元格弹出窗体显示详细信息
      

  2.   

    1楼的帅哥能具体一些吗?能不能给出代码呢?
    6月10号要答辩了,现在很急在做,之前因为都在看数据库的,结果上周老师说用文件,问他什么文件,他说不知道,我估摸着是xml,现在急着在做了。
      

  3.   

    别采用默认
    先读到DataSet中,然后按照列读取,添加
      

  4.   

    能给出代码或者类似的例子吗  这两天查xml的资料查的很累。
    现在做的这个只是程序里其中一个功能,还有其他的还没动手,感觉这个比较简单,所以先做了。
      

  5.   

    C#操作Xml(增删改查)练习 (转)
    web.config配置:view plaincopy to clipboardprint?
    <appSettings>  
      <add key="xmlFile" value="xml/class.xml"/>  
    </appSettings> 
     
    前台:view plaincopy to clipboardprint?
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="test_Default" %>  
      
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
      
    <html xmlns="http://www.w3.org/1999/xhtml" >  
    <head runat="server">  
        <title>C#操作Xml(增删改查)练习</title>  
    </head>  
    <body>  
        <form id="form1" runat="server">  
        <div id="showXml" runat="server">  
        显示Xml文档   
        </div>  
        <div style="background-color:Green;color:Yellow;" mce_style="background-color:Green;color:Yellow;">为html控件绑定服务器控件的两个要点:<br />  
        1.onserverclick="serverMethod"这里只写方法名.<br />  
        2.后台代码,必须是<br />  
        protected void XmlAdd(object sender, EventArgs e){}<br />  
        注意两个参数及保护级.   
        </div>  
        <input id="btnAdd" type="button" value="add" runat="server" onserverclick="XmlAdd" />  
        <input id="btnDelete" type="button" value="delete" runat="server" onserverclick="XmlDelete" />  
        <input id="btnUpdate" type="button" value="update" runat="server" onserverclick="XmlUpdate" />  
        <input id="btnQuery" type="button" value="query" runat="server" onserverclick="XmlQuery" />  
        </form>  
    </body>  
    </html>   后台:view plaincopy to clipboardprint?
    using System;   
    using System.Data;   
    using System.Configuration;   
    using System.Collections;   
    using System.Web;   
    using System.Web.Security;   
    using System.Web.UI;   
    using System.Web.UI.WebControls;   
    using System.Web.UI.WebControls.WebParts;   
    using System.Web.UI.HtmlControls;   
      
    using System.Xml;   
      
    public partial class test_Default : System.Web.UI.Page   
    {   
        string xmlFile = System.Configuration.ConfigurationManager.AppSettings["xmlFile"];   
        XmlDocument XmlDoc = new XmlDocument();   
        protected void Page_Load(object sender, EventArgs e)   
        {   
            Bind();   
        }   
        private void Bind()   
        {   
            XmlDoc.Load(Server.MapPath("../" + xmlFile));//向上一级   
            this.showXml.InnerHtml = System.Web.HttpUtility.HtmlEncode(XmlDoc.InnerXml);   
        }   
        protected void XmlAdd(object sender, EventArgs e)   
        {   
            XmlNode objRootNode = XmlDoc.SelectSingleNode("//Root");    //声明XmlNode对象   
            XmlElement objChildNode = XmlDoc.CreateElement("Student");  //创建XmlElement对象   
            objChildNode.SetAttribute("id", "1");   
            objRootNode.AppendChild(objChildNode);   
            //   
            XmlElement objElement = XmlDoc.CreateElement("Name");//???结点和元素的区别?方法都一样.   
            objElement.InnerText = "tree1";   
            objChildNode.AppendChild(objElement);   
            //保存   
            XmlDoc.Save(Server.MapPath("../" + xmlFile));   
        }   
        protected void XmlDelete(object sender, EventArgs e)   
        {   
            string Node = "//Root/Student[Name='tree1']";//Xml是严格区分大小写的.   
            XmlDoc.SelectSingleNode(Node).ParentNode.RemoveChild(XmlDoc.SelectSingleNode(Node));   
            //保存   
            XmlDoc.Save(Server.MapPath("../" + xmlFile));   
        }   
        protected void XmlUpdate(object sender, EventArgs e)   
        {   
            //XmlDoc.SelectSingleNode("//Root/Student[Name='tree1']/Name").InnerText = "tree2";   
            XmlDoc.SelectSingleNode("//Root/Student[Name='tree1']").Attributes["id"].Value = "001";   
            //保存   
            XmlDoc.Save(Server.MapPath("../" + xmlFile));   
        }   
        protected void XmlQuery(object sender, EventArgs e)   
        {   
            XmlNodeList NodeList = XmlDoc.SelectNodes("//Root/Student");//查询全部的student节点   
            //循环遍历节点,查询是否存在该节点   
            for (int i = 0; i < NodeList.Count; i++)   
            {   
                Response.Write(NodeList[i].ChildNodes[0].InnerText);   
            }   
      
            //查询单个节点,//表示全部匹配的元素./表示以此为根的子元素.javascript下的查询也是一样.   
            string XmlPathNode = "//Root/Student[Name='rock']/Photo";   
            Response.Write(XmlDoc.SelectSingleNode(XmlPathNode).InnerText);   
        }   
    }  xml文件:view plaincopy to clipboardprint?
    <?xml version="1.0" encoding="gb2312"?>  
    <Root>  
      <Student Admin="no">  
        <Name>rock</Name>  
        <NickName>rock1</NickName>  
        <Pwd>123</Pwd>  
        <Sex>男生</Sex>  
        <Birthday>1986-1-1</Birthday>  
        <Email>[email protected]</Email>  
        <QQ>123374355</QQ>  
        <Msn>[email protected]</Msn>  
        <Tel>13005129336</Tel>  
        <Homepage>http://www.loveplc.cn</Homepage>  
        <Address>广州</Address>  
        <Work>asp.net菜鸟</Work>  
        <Photo>images/rock.gif</Photo>  
        <Time>2008-3-18 10:15:29</Time>  
      </Student>  
      <Student Admin="yes">  
        <Name>tree</Name>  
        <NickName>宿舍老大</NickName>  
        <Pwd>51aspx</Pwd>  
        <Sex>男生</Sex>  
        <Birthday>  
        </Birthday>  
        <Email>[email protected]</Email>  
        <QQ>  
        </QQ>  
        <Msn>  
        </Msn>  
        <Tel>  
        </Tel>  
        <Homepage>  
        </Homepage>  
        <Address>  
        </Address>  
        <Work>  
        </Work>  
        <Photo>  
        </Photo>  
        <Time>2008-3-26 11:39:57</Time>  
      </Student>  
      <Student>  
        <Name>tree2</Name>  
      </Student>  
      <Student id="001">  
        <Name>tree1</Name>  
      </Student>  
    </Root>  
      

  6.   

    边等回复边编辑别的xml文件。
      

  7.   

    这样子写的话,datagrid里会以表格的形式列出xml文件里的所有内容,
    我的想法是只显示其中两列,一个是id,一个是每个条目的标题,
    点击标题可以显示该条目的具体内容(因为是手机程序,屏幕太小,内容在新窗口中显示),
    表格的形式好像没法做到这样的查看方式,有高手指教下吗?你可先绑定。或建一个数据集。添加新建项里有。然后再绑定。绑定之后把不要显示的列。隐藏不就可以了。
    这样比较简单。点击标题查看。只要在CELLCLICK事件写一些东西出来就可以了。
      

  8.   

    6楼和10的楼的哥们的方法都是和很正确的。
    楼主,我想说明,XmlDocument对象操作xml是最方便的,最全面的,获取集合后,然后再根据你的需要循环放到一个table或其它数据集中再绑定显示就行了。但是看来你对这个对象并不感冒,没办法。你只能用最简单的dataset来处理了。
    dataset就是用来处理一些比较规范的,具有一定格式的字符串的。10楼的哥们已经说得相当清楚了。我不知道还能怎么说了。你一边做一边查查资料吧。
      

  9.   

    不是感冒不感冒的问题,我之前没用过xml当数据库,所以现在都不怎么明白,只能尽量找类似的例子看了。
    另外就是我编程水平很烂……
      

  10.   

    10楼的哥们,请问怎么绑定xml文件的内容呢?
      

  11.   

    序例化和反序例化,几行简单的代码. 你去msdn找找看看
      

  12.   

    ds.Tables[0].Columns.Remove("solution");
    ds.Tables[0].Columns.Remove("others");用这两句把后面两列删掉了,现在只会显示id和problem两列,
    但是今天下午在网上查资料的时候,有见过文章说如果把列隐藏起来,那隐藏起来的列里的数据还可以使用,我现在这样把他们删了,是不是没法读取了?
      

  13.   

    Xmlnodes nodes = TreeView.nodes.add("");foreach(XmlNOdes var in nodes.ChildNodes)要用if(var .name="knowledge")判断来读取Xml遍历
      

  14.   

    有项目管理经验的.NET开发的朋友,加上限500人的QQ群28720769,一起交流。
      

  15.   

    不能删除的,要控制显示的列,在你的绑定控件里控件就行了。
    比如是gridview,你控制显示的列就行了。很方便