使用c#+(datagrid控件)编辑xml文件

来源:网络整理 责任编辑:栏目编辑 发表时间:2013-07-01 16:58 点击:

这个源码是我根据网上一个vb.net编辑xml文件的原理用c#重写的。除重用xml文件外.
并未重用任何代码!.

这小段代码,可对xml文件的记录进行删除,修改,或增加新记录。
利用了datagrid控件的sortcommand事件对xml里的记录进行排序。

email:ouyang76.263.net
------------------------------------------
<%@page language="c#" Trace="true"%>
<%@import namespace="System.Data"%>
<%@import namespace="System.IO"%>
<script language="c#" runat="server">
string xmlfile="books2.xml",xpath;
void page_load(Object obj,EventArgs e)
{
xpath=Server.MapPath(xmlfile);
  if(!Page.IsPostBack)
   {
      Dataload("isbn");
      }
  }
 
  void Dataload(string psort)
  {
    DataSet ds=new DataSet();
    FileStream fs=new FileStream(xpath,FileMode.Open);
    ds.ReadXml(fs);
  
   if(ds.Tables.Count==0)
      {
        Response.Write("xml文件内无记录!!!!");
        fs.Close();
        Response.End();
        }
    Trace.Warn("表记录数",Convert.ToString(ds.Tables[0].Rows.Count));
   
    DataRow dr=ds.Tables[0].NewRow();//新建一行
    dr["ISBN"] = " Add ISBN";
    ds.Tables[0].Rows.InsertAt(dr,0);//插入到第0行位置
  
    Trace.Warn("表数目",Convert.ToString(ds.Tables.Count));//以红字显示调试信息
   
    //grid1.DataSource=ds.Tables[0].DefaultView;
    //grid1.DataBind();
   
    DataView dv=new DataView(ds.Tables[0]);
    Trace.Warn("字串长度:"+psort,Convert.ToString(psort.Length));//排序字符串的长度
    if(psort.Length>0)
         dv.Sort=psort;
       
    grid1.DataSource=dv;
    grid1.DataBind();
    fs.Close();
  }
 
  void grid_sort(Object obj,DataGridSortCommandEventArgs e)
  {
   if(grid1.EditItemIndex==-1)
     Dataload(e.SortExpression);
    else
     Response.Write("正在编辑暂不能排序!!");
  }
 
  void grid_edit(Object obj,DataGridCommandEventArgs e)
  {
  grid1.EditItemIndex=(int)e.Item.ItemIndex;
  show_del("hide");
  Dataload("");
  }
 
  void grid_cancel(Object obj,DataGridCommandEventArgs e)
  {
  grid1.EditItemIndex=-1;
  show_del("show");
  Dataload("");
  }
 
  void grid_update(Object obj,DataGridCommandEventArgs e)
  {
  int numcell=e.Item.Cells.Count;//单元格数目(e.Item是当前发生事件的表格行)
  int currentrow=e.Item.DataSetIndex;
  //int curr2=e.Item.ItemIndex;//与上句等价,可以不带(int)
  Trace.Warn("当前更新行号 = ",Convert.ToString(currentrow));
  //Trace.Warn("2当前更新行号 = ",Convert.ToString(curr2));
 
    DataSet ds=new DataSet();
    ds.ReadXml(xpath);//将xml模式和数据读取到dataSet;
    DataRow dr;//表示DataTable中的一行信息.
 
     if(currentrow==0)
       dr=ds.Tables[0].NewRow();
     else
       dr=ds.Tables[0].Rows[e.Item.DataSetIndex - 1];
   
  

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • 用C#制作屏幕捕获程序
    • .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上
    • 遍历ArrayList易犯错误
    • C#对XML操作:一个处理XML文件的类(1)
    • .NET简谈反射(动态调用)
    • 使用C#编写LED样式时钟控件
    • DataList嵌套问题 如何删除内层子DataList的记录
    • 怎样用C#实现完整文档打印功能
    • .NET简谈自定义事务资源管理器
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1