使用c#+(datagrid控件)编辑xml文件
使用c#+(datagrid控件)编辑xml文件
这个源码是我根据网上一个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];
string[] str={"isbn", "author", "title", "category", "comments"};
int j=-1;
for(int i=2;i<numcell;i++)//跳过1和2column
{
j=j+1;
string ctext;
ctext=((TextBox)e.Item.Cells[i].Controls[0]).Text;
dr[str[j]] = ctext;
Trace.Warn(Convert.ToString(i)+str[j]+":每一行的文本",ctext);
}
if(currentrow==0)
{
Response.Write("加入新记录!!");
ds.Tables[0].Rows.InsertAt(dr,0);
}
ds.WriteXml(xpath);//将表示dataset的xml写入到xml文件中,包括数据和模式.
grid1.EditItemIndex = -1;//无此句仍在编辑界面
show_del("show");
Dataload("");
}
void show_del(string state)
{
string tmp=state;
switch(tmp)
{
case "show":
grid1.Columns[0].Visible = true;
break;
case "hide":
grid1.Columns[0].Visible = false;
break;
default:
grid1.Columns[0].Visible = true;
break;//也要带break
}
}
void initialize(Object obj,DataGridItemEventArgs e)//注意参数与其它函数不同
{
//e.Item.Cells[0].Text="aaaaa";//
if(e.Item.ItemIndex==0)//如果是第一行
{
LinkButton a0=new LinkButton();
a0=(LinkButton)e.Item.Cells[0].Controls[0];
LinkButton a1=new LinkButton();
a1=(LinkButton)e.Item.Cells[1].Controls[0];//在grid内建一个linkbutton控件
if(a0.Text=="删 除")
a0.Text="";
if(a1.Text=="编 辑")
a1.Text="[AddNew]";
}
}
void grid_del(Object obj,DataGridCommandEventArgs e)
{
Response.Write("XX");
Trace.Warn("正要删除",Convert.ToString(e.Item.ItemIndex));//控件中的行数
int curr=e.Item.ItemIndex;
DataSet ds=new DataSet();
ds.ReadXml(xpath);
DataRow dr=ds.Tables[0].Rows[curr-1];//有一行是新加的。
dr.Delete();//找到相应的数据行,将其删除
ds.WriteXml(xpath);
grid1.EditItemIndex = -1;
Dataload("");
}
</script>
<form runat="server">
<asp:datagrid id="grid1" runat="server"
alternatingitemstyle-backcolor="#eeeeee"
headerstyle-backcolor="lightyellow"
font-size="10pt"
allowsorting="true"
onsortcommand="grid_sort"
oneditcommand="grid_edit"
oncancelcommand="grid_cancel"
onupdatecommand="grid_update"
onitemcreated="initialize"
ondeletecommand="grid_del"
bordercolor="#999999"
>
<columns>
<asp:buttoncolumn text="删 除" commandname="delete"/>
<asp:editcommandcolumn buttontype="linkbutton" updatetext="更 新" canceltext="取 消" edittext="编 辑" headertext=""/>
</columns>
</asp:datagrid>
</form>
--------------------------------------------------------------------
xml文件(文件名:books2.xml)
<?xml version="1.0" standalone="yes"?>
<books>
<book>
<isbn>2e2e2we2we2</isbn>
<author>fefdw</author>
<title>2e2eef</title>
<category>324tg</category>
<comments>r3rrgeqw21</comments>
</book>
<book>
<isbn>1234345</isbn>
<author>ssdfdfe</author>
<title>fgregre</title>
<category>r4er43trt</category>
<comments>r3r3redqeq</comments>
</book>
<book>
<isbn>1234345</isbn>
<author>ssdfdfe</author>
<title>fgregre</title>
<category>r4er43trt</category>
<comments>r3r3redqeq</comments>
</book>
<book>
<isbn>0679757651</isbn>
<author>Tom Peters</author>
<title>Circle of Innovation</title>
<category>marketing</category>
<comments>His most recent book is his best by far!</comments>
</book>
<book>
<isbn>0884270610</isbn>
<author>Eli Goldthrait</author>
<title>The Goal</title>
<category>management</category>
<comments>Advocate of Theory of Constraints as applied to managment and optimization.</comments>
</book>
<book>
<isbn>068485600X</isbn>
<author>Jeff Cox, Howard Stevens</author>
<title>Selling the Wheel</title>
<category>management</category>
<comments>Excellent Treatise/Novel on the entire Sales Cycle</comments>
</book>
<book>
<isbn>0672316498</isbn>
<author>Alan Cooper</author>
<title>The Inmates Are Running The Asylum</title>
<category>management</category>
<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>
</book>
</books>
相关文章:

HorizontalTable
2019独角兽企业重金招聘Python工程师标准>>> HorizontalTable 实现了可水平滚动的 TableView。 转载:http://www.adobex.com/ios/source/details/00000761.htm 转载于:https://my.oschina.net/u/868244/blog/106055

敏捷软件开发的12个原则
作为一个软件工程师,软件设计和开发是最重要的技能,但是,从整个产品的角度上讲,项目管理能力比开发能力更重要,本文摘自Robert大叔的《敏捷软件开发》,粗体是Robert大叔的话,细体是我的理解。 1…

JAVE EE 企业级开发之从零开始学JAVA【51CTO技术论坛】
http://bbs.51cto.com JAVE EE 企业级开发之从零开始学JAVA 从零开始学JAVA?YES!本刊内容全部为午饭redking整理、撰写,所涉及内容均为原创,非常适合入门级JAVA新人学习,从理论到实际,跟随redking一起学习JAVA&#x…
打工人,打工魂,抽终身会员,成为人上人!
今年双11,CSDN直接来了个前所未有的福利大奖!CSDN终身会员还有全站课程免费学!喜欢吗?哈哈哈哈,还没完呢!买CSDN年会员,不要¥299,只要¥199!超级年…

如何创建一个用弹出窗口来查看详细信息的超链接列
如何创建一个用弹出窗口来查看详细信息的超链接列出处:www.dotnetjunkie.com 这篇文章来自于一位忠实的DotNetJunkie的建议,他最初发了一封email给我们,要求我们给出一个例子来说明如何在DataGrid中设置一个当用户点击时能够弹出显示其…

HashSet的使用
2019独角兽企业重金招聘Python工程师标准>>> 1.Set中元素是无序的 HashSet setnew HashSet(); set.add("a"); set.add("b"); set.add("c"); set.add("d"); System.out.println(set);//结果:[d,b,c,a]2.Set不允许…

python实现nginx图形界面管理
好久没有更新博客了,最近一直在学习python,于是,在有空闲的时间写下python视图界面管理nginx,写得不够好,不过希望能帮忙到其他童鞋,再次感叹,强大的python,不说了,上代码。 [rootlo…
小马智行获2.67亿美元新融资,估值超53亿美元
11月6日,小马智行(Pony.ai)宣布获得由加拿大安大略省教师退休基金会(Ontario Teachers Pension Plan,OTPP)旗下教师创新平台(Teachers’ Innovation Platform, TIP)领投总计2.67亿美…

DataSet导出CSV格式(ASP.NET,C#)
DataSet导出CSV格式(ASP.NET,C#)作者:NotMSN:notkinghotmail.comEmail:notssohu.com本文引用下面的 Microsoft .NET 框架类库命名空间:System.Data;System.Web.UI.WebControls;概要本文解决将DataSet导出到CSV格式问题、将DataGrid中的数据导出到CSV格式…

ArcEngine的ToolbarControl解析
转自Love Lyre原文 ArcEngine的ToolbarControl解析 ToolbarControlClass有三个主要的接口: IToolbarControl, IToolbarControl2, IToolbarControlDefault 其中,IToolbarControl2是IToolbarControl的新版本.而IToolbarControlDefault is a pure dispatch interface,始终是I…

在C#里实现DATAGRID的打印预览和打印
作者Blog:http://blog.csdn.net/qieyj/很多人都在论坛里问,如何实现DATAGRID的打印预览和打印,现在我就把这方面的源代码告诉大家。这段代码也花费了我1个晚上的时间,呵呵!数据库是基于sql server2000自带的northwind。…

ORACLE SQL: 经典查询练手第二篇
本文使用的实例表结构与表的数据如下: scott.emp员工表结构如下: SQL> DESC SCOTT.EMP;Name Type Nullable Default Comments -------- ------------ -------- ------- -------- EMPNO NUMBER(4) 员工编号 ENAME…

第十三届光华工程科技奖名单揭晓!这40位专家和1个团体获奖
11月8日,第十三届光华工程科技奖揭晓仪式在北京隆重举行。工程科技是推动人类进步的发动机,是产业革命、经济发展、社会进步的有力杠杆。光华工程科技奖由中国工程院主管,目前已是第十三届,被誉为“中国工程界最高奖项”ÿ…

【C#公共帮助类】给大家分享一些加密算法 (DES、HashCode、RSA、AES等)
http://www.cnblogs.com/yuangang/p/5466068.html转载于:https://www.cnblogs.com/daming1233/p/6704562.html

MongoDB的备份(mongodump)与恢复(mongorestore)
为什么80%的码农都做不了架构师?>>> 不用多想,数据的备份无论什么时候都是必须的,尤其是重要数据。 MongoDB也提供了备份和恢复的功能,分别是MongoDB下载目录下的mongdump.exe和mongorestore.exe文件。 先介绍下命令…

Windows 2000/XP 注册表终极修改(转载)
Microsoft Windows 2000/XP 是一个强大的操作系统,为我们提供了以往Windows 9x从未有过的安全性能,可是你是否感觉某些地方的设置还不够呢,这里就对Windows 2000 的注册表进行一些修改来达到我们的目的。 一、修改开始菜单和任务栏 由于以往不…

百度CTO王海峰获“光华工程科技奖”,深耕自然语言处理近30年
11月8日,第十三届光华工程科技奖揭晓仪式在北京举行。该奖项被誉为“中国工程界最高奖项”,旨在对我国工程科技及管理领域做出杰出贡献的科学家、工程师进行表彰。百度CTO王海峰因其在人工智能领域、尤其是自然语言处理领域的卓越贡献,成为AI…

python自定义库文件路径
各有各的小烦恼,各有的小期待 这是人家私事,不要大嘴巴 在Pycharm中import whois时,总是失败 原因是安装了python3.x相关操作过程,将环境变量path中关于Python的配置c:\Python27和c:\Python27\Scripts都删除,pycharm中…

开机BIOS语言(转载)
开机自检时出现问题后会出现各种各样的英文短句,短句中包含了非常重要的信息,读懂这些信息可以自己解决一些小问题,可是这些英文难倒了一部分朋友,下面是一些常见的BIOS短句的解释,大家可以参考一下。 1.CMOS battery …
参与开源项目,结识技术大牛!CSDN“开源加速器计划”招募志愿者啦!
什么是“CSDN开源加速器计划”?纵观近 30 年的科技创新,开源已成为全球技术应用和行业数字化发展的基石,尤其最近几年,开源的商业化得到了极大突破,开源正在成为全球科技的强劲驱动力。在开源生态中,开发者…

破解CentOS的root密码(救援模式无密码)
开机后,在倒数读秒的时候按任意键、跳转画面后,再按E键,进入如下界面: 此时把光标定位到第二行,再按E键(意为:在启动顺序里编辑这条命令),如下图,此时输入“空…

第九—十三单元练习
<<<第九单元练习>>>1.在desktop主机中建立用户westos,并设定其密码为westoslinux2.配置desktop中的sshd服务要求如下:*)设定sshd服务只允许westos用户可以被访问使用*)创建westos用户的key认证方式*)…
用 Java 训练深度学习模型,原来这么简单
作者 | DJL-Keerthan&Lanking来源 | HelloGitHub头图 | CSDN下载自东方IC前言很长时间以来,Java 都是一个很受企业欢迎的编程语言。得益于丰富的生态以及完善维护的包和框架,Java 拥有着庞大的开发者社区。尽管深度学习应用的不断演进和落地…

重装操作系统的20条原则(转载)
系统是否需重装,三条法则帮你忙: 如果系统出现以下三种情况之一,应该是你考虑重装系统的时候了: 1)系统运行效率变得低下,垃圾文件充斥硬盘且散乱分布又不便于集中清理和自动清理; 2)系统频繁出错&…

RKLayout
2019独角兽企业重金招聘Python工程师标准>>> RKLayout 是 iOS 上一个简单的布局管理器 转载:http://www.adobex.com/ios/source/details/00000978.htm 转载于:https://my.oschina.net/u/868244/blog/107107

【网络流24题】最小路径覆盖问题
【题目】1738: 最小路径覆盖问题 【题解】网络流 关于输出路径,因为即使有反向弧经过左侧点也一定会改变左侧点的去向,若没连向右侧就会被更新到0,所以不用在意。 mark记录有入度的右侧点,然后从没入度的右侧点开始把整条路径输出…

Windows的端口列表(转载)
按端口号可分为3大类: (1)公认端口(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端…
有了图分析,可解释的AI还远吗?
GraphAI 更多新可能随着深度学习、机器学习等人工智能技术的逐级深入,企业对挖掘大数据的关联性去探索“隐藏”在背后的商业价值提出了更高的要求。尤其是,新一代人工智能技术正从“感知智能”迈向“认知智能”,让机器实现“理解、推理、决策…

智能公交GPS
蓝斯通信推出LZ8713B*-X车载终端。这款设备是按交通部JT/T794-2011《道路运输车辆卫星定位系统车载终端技术要求 》和JT/T808-2011《道路运输车辆卫星定位系统车载终端通讯协议及数据格式》技术标准进行设计的。 产品集GPS(可选配BD2双模模块)…
数据化管理在餐饮业中的应用
一、为什么要重视数据化运营和管理? “从经营到管理,管理方向需要数据灯塔” 餐饮市场和社会各业具有相似之处,也有很明确的本质不同。 1、首先,餐饮市场不像电信、石油市场是垄断性的,餐饮市场充分透明,符…