[转贴]使用c#+(datagrid控件)编辑xml文件

  1 <% @page language="c#" Trace="true" %>  
  2 <% @import namespace="System.Data" %>  
  3 <% @import namespace="System.IO" %>  
  4 < script  language ="c#"  runat ="server" >  
  5string xmlfile="books2.xml",xpath; 
  6void page_load(Object obj,EventArgs e) 
  7
  8xpath=Server.MapPath(xmlfile); 
  9  if(!Page.IsPostBack) 
 10   
 11      Dataload("isbn"); 
 12      }
 
 13  }
 
 14  
 15  void Dataload(string psort) 
 16  
 17    DataSet ds=new DataSet(); 
 18    FileStream fs=new FileStream(xpath,FileMode.Open); 
 19    ds.ReadXml(fs); 
 20   
 21   if(ds.Tables.Count==0
 22      
 23        Response.Write("xml文件内无记录!!!!"); 
 24        fs.Close(); 
 25        Response.End(); 
 26        }
 
 27    Trace.Warn("表记录数",Convert.ToString(ds.Tables[0].Rows.Count)); 
 28    
 29    DataRow dr=ds.Tables[0].NewRow();//新建一行 
 30    dr["ISBN"= " Add ISBN"
 31    ds.Tables[0].Rows.InsertAt(dr,0);//插入到第0行位置 
 32   
 33    Trace.Warn("表数目",Convert.ToString(ds.Tables.Count));//以红字显示调试信息 
 34    
 35    //grid1.DataSource=ds.Tables[0].DefaultView; 
 36    //grid1.DataBind(); 
 37    
 38    DataView dv=new DataView(ds.Tables[0]); 
 39    Trace.Warn("字串长度:"+psort,Convert.ToString(psort.Length));//排序字符串的长度 
 40    if(psort.Length>0
 41         dv.Sort=psort; 
 42        
 43    grid1.DataSource=dv; 
 44    grid1.DataBind(); 
 45    fs.Close(); 
 46  }
 
 47  
 48  void grid_sort(Object obj,DataGridSortCommandEventArgs e) 
 49  
 50   if(grid1.EditItemIndex==-1
 51     Dataload(e.SortExpression); 
 52    else 
 53     Response.Write("正在编辑暂不能排序!!"); 
 54  }
 
 55  
 56  void grid_edit(Object obj,DataGridCommandEventArgs e) 
 57  
 58  grid1.EditItemIndex=(int)e.Item.ItemIndex; 
 59  show_del("hide"); 
 60  Dataload(""); 
 61  }
 
 62  
 63  void grid_cancel(Object obj,DataGridCommandEventArgs e) 
 64  
 65  grid1.EditItemIndex=-1
 66  show_del("show"); 
 67  Dataload(""); 
 68  }
 
 69  
 70  void grid_update(Object obj,DataGridCommandEventArgs e) 
 71  
 72  int numcell=e.Item.Cells.Count;//单元格数目(e.Item是当前发生事件的表格行) 
 73  int currentrow=e.Item.DataSetIndex; 
 74  //int curr2=e.Item.ItemIndex;//与上句等价,可以不带(int) 
 75  Trace.Warn("当前更新行号 = ",Convert.ToString(currentrow)); 
 76  //Trace.Warn("2当前更新行号 = ",Convert.ToString(curr2)); 
 77  
 78    DataSet ds=new DataSet(); 
 79    ds.ReadXml(xpath);//将xml模式和数据读取到dataSet; 
 80    DataRow dr;//表示DataTable中的一行信息. 
 81  
 82     if(currentrow==0
 83       dr=ds.Tables[0].NewRow(); 
 84     else 
 85       dr=ds.Tables[0].Rows[e.Item.DataSetIndex - 1]; 
 86    
 87    string[] str={"isbn""author""title""category""comments"}
 88    int j=-1
 89    for(int i=2;i<numcell;i++)//跳过1和2column 
 90     
 91        j=j+1
 92        string ctext; 
 93        ctext=((TextBox)e.Item.Cells[i].Controls[0]).Text; 
 94        
 95        dr[str[j]] = ctext; 
 96        Trace.Warn(Convert.ToString(i)+str[j]+":每一行的文本",ctext); 
 97       }
 
 98       
 99    if(currentrow==0
100    
101      Response.Write("加入新记录!!"); 
102      ds.Tables[0].Rows.InsertAt(dr,0); 
103      }
 
104      
105    ds.WriteXml(xpath);//将表示dataset的xml写入到xml文件中,包括数据和模式. 
106    grid1.EditItemIndex = -1;//无此句仍在编辑界面 
107    show_del("show"); 
108    Dataload(""); 
109  }
 
110  
111  void show_del(string state) 
112  
113  string tmp=state; 
114  switch(tmp) 
115  
116   case "show"
117   grid1.Columns[0].Visible = true
118     break
119   case "hide"
120    grid1.Columns[0].Visible = false
121     break
122     default
123   grid1.Columns[0].Visible = true
124     break;//也要带break 
125    }
 
126  }
 
127
128  void initialize(Object obj,DataGridItemEventArgs e)//注意参数与其它函数不同 
129  
130     //e.Item.Cells[0].Text="aaaaa";// 
131     if(e.Item.ItemIndex==0)//如果是第一行 
132     
133     LinkButton a0=new LinkButton(); 
134     a0=(LinkButton)e.Item.Cells[0].Controls[0]; 
135     
136     LinkButton a1=new LinkButton(); 
137     a1=(LinkButton)e.Item.Cells[1].Controls[0];//在grid内建一个linkbutton控件 
138     
139    if(a0.Text=="删 除"
140        a0.Text=""
141    if(a1.Text=="编 辑"
142         a1.Text="[AddNew]"
143      }
 
144   }
 
145   
146  void grid_del(Object obj,DataGridCommandEventArgs e) 
147  
148  Response.Write("XX"); 
149  Trace.Warn("正要删除",Convert.ToString(e.Item.ItemIndex));//控件中的行数 
150  int curr=e.Item.ItemIndex; 
151    DataSet ds=new DataSet(); 
152    ds.ReadXml(xpath); 
153    
154    DataRow dr=ds.Tables[0].Rows[curr-1];//有一行是新加的。 
155    dr.Delete();//找到相应的数据行,将其删除 
156    ds.WriteXml(xpath); 
157  
158  grid1.EditItemIndex = -1
159  Dataload(""); 
160
161  }
 
162
</ script >  
163
164 < form  runat ="server" >  
165 < asp:datagrid  id ="grid1"  runat ="server"  
166 alternatingitemstyle-backcolor ="#eeeeee"  
167 headerstyle-backcolor ="lightyellow"  
168 font-size ="10pt"  
169 allowsorting ="true"  
170 onsortcommand ="grid_sort"  
171 oneditcommand ="grid_edit"  
172 oncancelcommand ="grid_cancel"  
173 onupdatecommand ="grid_update"  
174 onitemcreated ="initialize"     
175 ondeletecommand ="grid_del"  
176 bordercolor ="#999999"  
177 >  
178 < columns >  
179 < asp:buttoncolumn  text ="删 除"  commandname ="delete" />  
180 < asp:editcommandcolumn  buttontype ="linkbutton"  updatetext ="更 新"  canceltext ="取 消"  edittext ="编 辑"  headertext ="" />  
181 </ columns >  
182 </ asp:datagrid >  
183 </ form >
184
 

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

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

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

email:ouyang76.263.net
------------------------------------------ 

--------------------------------------------------------------------
xml文件(文件名:books2.xml)

 

 1 <? xml version="1.0" standalone="yes" ?>  
 2 < books >  
 3    < book >  
 4      < isbn > 2e2e2we2we2 </ isbn >  
 5      < author > fefdw </ author >  
 6      < title > 2e2eef </ title >  
 7      < category > 324tg </ category >  
 8      < comments > r3rrgeqw21 </ comments >  
 9    </ book >  
10    < book >  
11      < isbn > 1234345 </ isbn >  
12      < author > ssdfdfe </ author >  
13      < title > fgregre </ title >  
14      < category > r4er43trt </ category >  
15      < comments > r3r3redqeq </ comments >  
16    </ book >  
17    < book >  
18      < isbn > 1234345 </ isbn >  
19      < author > ssdfdfe </ author >  
20      < title > fgregre </ title >  
21      < category > r4er43trt </ category >  
22      < comments > r3r3redqeq </ comments >  
23    </ book >  
24    < book >  
25      < isbn > 0679757651 </ isbn >  
26      < author > Tom Peters </ author >  
27      < title > Circle of Innovation </ title >  
28      < category > marketing </ category >  
29      < comments > His most recent book is his best by far! </ comments >  
30    </ book >  
31    < book >  
32      < isbn > 0884270610 </ isbn >  
33      < author > Eli Goldthrait </ author >  
34      < title > The Goal </ title >  
35      < category > management </ category >  
36      < comments > Advocate of Theory of Constraints as applied to managment and optimization. </ comments >  
37    </ book >  
38    < book >  
39      < isbn > 068485600X </ isbn >  
40      < author > Jeff Cox, Howard Stevens </ author >  
41      < title > Selling the Wheel </ title >  
42      < category > management </ category >  
43      < comments > Excellent Treatise/Novel on the entire Sales Cycle </ comments >  
44    </ book >  
45    < book >  
46      < isbn > 0672316498 </ isbn >  
47      < author > Alan Cooper </ author >  
48      < title > The Inmates Are Running The Asylum </ title >  
49      < category > management </ category >  
50      < comments > The father of Visual Basic and creator of the new art of Interaction Design - very valuable in designing websites. Basically the worlds most cutting edge thinker in User Interface design aimed at simplifying software use. </ comments >  
51    </ book >  
52 </ books >  

你可能感兴趣的:(datagrid)