急问:datagridview如何读写数据到XML文件
先是把datagridview的数据写入XML文件,然后还能读取XMl文件到datagridview上

解决方案 »

  1.   

    DataSet set = new DataSet();
    set.ReadXml(@"C:\XML1.xml");
    dataGridView.DataSource = set.Tables[0];set.WriteXml(@"C:\XML1.xml");
      

  2.   

    我是这样写的啊
    但是老出错啊
    说找不到Tables[0]的第0行
    主要难点还是怎样把datagridview的数据写入一个新的XML文件中
      

  3.   


    简单的帮搂主搞了下伪代码,可以作为参考:private void SaveToXml()
    {
        this.CreateColumnXmlNode();
        for (int index = 0; index < this.dataGridView1.Rows.Count; index++)
        {
            DataGridViewRow row = this.dataGridView1.Rows[index];
            this.CreateXmlNode(row);
        }
    }private void CreateColumnXmlNode()
    {
        for (int index = 0; index < this.dataGridView1.Columns.Count; index++)
        {
            string szHeaderText = this.dataGridView1.Columns[index].HeaderText;
            //
            //.....保存列标题和索引到xml节点的对应属性中
         }
    }private void CreateRowXmlNode(DataGridViewRow row)
    {
         for (int index = 0; index < row.Cells.Count; index++)
         {
             DataGridViewCell cell = row.Cells[index];
             //
             //.....保存单元格内容,以及单元格索引到xml节点的对应属性中
          }
    }xml结构:
    <DataGridViewData>
       <Columns>
          <Item Index = "索引" Text = "列标题"/>
          ......
       </Columns>
       <Rows>
          <Item Index = "索引" Value = "内容"/>
          ......
       </Rows>
    </DataGridViewData>
      

  4.   


    ====================================================
    说找不到Tables[0]的第0行,DataSet中没有内容,你判断一下就ok:
    if(set==null)
    {
    //Not doing anything
    }
    or
    if(set.Tables[0].Rows.count > 0)
    {
    //doing something here
    }主要难点还是怎样把datagridview的数据写入一个新的XML文件中,
    用ExcuteXmlReader去获取,这个在vs2005中已具备。
      

  5.   

    不好意思,行的节点结构搞错了:
      <Rows> 
          <Item Cell1 = "内容" Cell2 = "内容" Cell3 = "内容" ..../> 
          ...... 
      </Rows>
    其中,Cell1 Cell2 Cell3需要动态生成
      

  6.   


                DataTable tb = this.dataGridView1.DataSource as DataTable;
                if(tb != null)
                {
                    tb.WriteXml(@"C:\table.xml",true);
                    return;
                }
                DataView dv =  this.dataGridView1.DataSource as DataView;
                if(dv != null)
                {
                    dv.Table.WriteXml(@"C:\table.xml",true);
                    return;
                }
                IList list = this.dataGridView1.DataSource as IList;
                if(list != null)
                {
                  //to do,如果是IList,就要你自己想办法导出了
                    //XmlDocument or XmlWriter都可以考虑
                }
      

  7.   

    这样搂主才能自定义生成和读取的XML文件格式
      

  8.   

    俺是个新人,XML的节点是怎么得到的啊?XML结构是自己先写好的吗?
      

  9.   

    “XML的节点是怎么得到的啊?”
    --------xml节点以及文档是自己创建的XML结构是自己先写好的吗?
    --------不是先写好的,而是预先定义好的建议搂主可以自己去学习一下XML文档操作,以及XPath的有关资料