欢迎光临
我们一直在努力

一个操作datagrid绑定xml文件的例子程序-ASP教程,XML相关

建站超值云服务器,限时71元/月

原作:不详

完善:大鼹鼠

再完善:塞北的雪

但是现在还不能对一个没有记录的xml进行操作。但是会提示空。

另外做完一个删除操作后,如果刷新也会出错,因为我对vb.net不是很熟,所以改的不知道怎么样?

<%@page language="vb" runat="server" responseencoding="utf-8"%>

<%@ import namespace="system.data" %>

<%@ import namespace="system.io" %>

<%@ import namespace="system.xml" %>

<script language="vb" runat="server" >

原来responseencoding=gb2312 然而通过更新操作的汉字就会将乱码保存到xml文件中

改成responseencoding=utf-8 就没有问题了。

sub page_load(sender as object,e as eventargs)

if not page.ispostback then

eventdate.datasource = loadmyconfigdata

if intrecordcount> 0 then

eventdate.databind()

else

response.write("这是一个空xml文件")

response.end()

end if

end if

end sub

private intrecordcount as integer

protected function loadmyconfigdata() as dataset

dim sourcexml as string = server.mappath("lzdata.xml")

if (not file.exists(sourcexml)) then

return nothing

end if

dim doc as new xmldocument()

doc.load(sourcexml)

intrecordcount=doc.selectnodes("//groups").count

dim cacheddataset as dataset = session("myconfigdata1")

if (not cacheddataset is nothing) then

return cacheddataset

end if

dim dataset as dataset = new dataset()

try

dataset.readxml(sourcexml)

session("myconfigdata1")=dataset

catch e as exception

errormessage.text = e.message

dataset=nothing

end try

return dataset

end function

sub dedr_edit(sender as object,e as datagridcommandeventargs)

eventdate.edititemindex = cint(e.item.itemindex)

eventdate.datasource = loadmyconfigdata

eventdate.databind()

end sub

sub dedr_update(sender as object,e as datagridcommandeventargs)

dim dataset as dataset = loadmyconfigdata

dim p1 as integer=eventdate.currentpageindex 获得页数 (页数是从0开始的)

dim row1 as integer = cint(e.item.itemindex) 获得发生事件的行数 (从0开始的)

dim row as integer

dim edittext as textbox

row = p1* eventdate.pagesize +row1

edittext=e.item.findcontrol("txttitle") 获得数据采集文本框

dataset.tables(0).rows(row).item("title") = trim(edittext.text)

edittext=e.item.findcontrol("txtfolder")

dataset.tables(0).rows(row).item("folder") = trim(edittext.text)

edittext=e.item.findcontrol("txtfolderimg")

dataset.tables(0).rows(row).item("folderimg") = trim(edittext.text)

edittext=e.item.findcontrol("txtname")

dataset.tables(0).rows(row).item("name") = edittext.text

dataset.writexml(server.mappath("lzdata.xml"))

session("myconfigdata1")=nothing

eventdate.edititemindex= -1

eventdate.datasource = loadmyconfigdata

eventdate.databind()

end sub

sub dedr_cancel(sender as object,e as datagridcommandeventargs)

eventdate.edititemindex= -1

session("myconfigdata1")=nothing

eventdate.datasource = loadmyconfigdata

eventdate.databind()

end sub

sub dedr_delete(sender as object,e as datagridcommandeventargs)

dim dataset as dataset = loadmyconfigdata

dim row1 as integer = cint(e.item.itemindex)

dim p1 as integer=eventdate.currentpageindex

dim row as integer

if (intrecordcount mod eventdate.pagesize)=1 and row1=0 then

response.write ("<script>alert(每页只剩一个记录时不能删除,请到上一页删除,或在该页添加一个新记录再删除!)</" & "script>")

row = p1* eventdate.pagesize +row1

dataset.tables(0).rows(row).delete

dataset.writexml(server.mappath("lzdata.xml"))

session("myconfigdata1")=nothing

eventdate.edititemindex= -1

if eventdate.currentpageindex>0 then

eventdate.currentpageindex=eventdate.currentpageindex-1

eventdate.datasource = loadmyconfigdata

eventdate.databind()

else

response.write("xml已经被删空了")

response.end()

end if

else

row = p1* eventdate.pagesize +row1

dataset.tables(0).rows(row).delete

dataset.writexml(server.mappath("lzdata.xml"))

session("myconfigdata1")=nothing

eventdate.edititemindex= -1

eventdate.datasource = loadmyconfigdata

eventdate.databind()

end if

end sub

sub dedr_add(sender as object,e as eventargs)

dim dataset as dataset = loadmyconfigdata

dim newrow as datarow 建立一个新行

newrow=dataset.tables(0).newrow()

newrow.item("eventdate")=now() "15/07/2001"

newrow.item("title")="讨论和解决"

newrow.item("folder")="group"

newrow.item("folderimg")="images/bigmolefolder.gif "

newrow.item("name")="技术"

dataset.tables(0).rows.add(newrow) 将行添加到当前的dataset中

dataset.writexml(server.mappath("lzdata.xml")) 将dataset写到xml文件中

session("myconfigdata1")=nothing

eventdate.datasource = loadmyconfigdata

eventdate.databind()

每次都至多有一行被置为编辑行,编辑行显示的就是列中的 edititemtemplate

dim ps as integer=intrecordcount 记录数

eventdate.currentpageindex=math.ceiling(ps/eventdate.pagesize)-1 设定当前显示最后一页

dim tmpint as integer=ps-math.floor(ps/eventdate.pagesize)*eventdate.pagesize

if tmpint=0 then tmpint=eventdate.pagesize

eventdate.edititemindex= tmpint – 1 设置显示edititemtemplate的行号

eventdate.datasource = loadmyconfigdata

eventdate.databind()

end sub

翻页时

sub dedr_changed(sender as object,e as datagridpagechangedeventargs)

eventdate.edititemindex=-1

eventdate.currentpageindex = e.newpageindex

eventdate.datasource = session("myconfigdata1")

eventdate.databind()

end sub

</script>

<html>

<meta http-equiv="content-type" content="text/html; charset=utf-8">

<body>

<% 下面的列设置中,每一个 templatecolumn中都有 itemtemplate 和 edititemtemplate两种 可以

通过代码控制显示哪一种 %>

<form runat="server">

<asp:label id="errormessage" runat="server"/><br/>

<asp:linkbutton onclick="dedr_add" text="添加新记录" runat="server"/><br/>

<asp:datagrid id="eventdate"

autogeneratecolumns="false" width="100%" runat="server"

allowpaging="true"

pagesize="15"

pagerstyle-mode="numericpages"

pagerstyle-horizontalalign="right"

pagerstyle-prevpagetext="前页"

pagerstyle-nextpagetext="后页"

onpageindexchanged="dedr_changed"

oneditcommand="dedr_edit"

onupdatecommand="dedr_update"

oncancelcommand="dedr_cancel"

ondeletecommand="dedr_delete">

<headerstyle forecolor="white" backcolor="dodgerblue"

font-bold="true"/>

<itemstyle backcolor="white"/>

<alternatingitemstyle backcolor="gainsboro"/>

<columns>

<asp:templatecolumn headertext="栏目描述">

<itemtemplate>

<%# container.dataitem("title")%>

</itemtemplate>

<edititemtemplate>

<asp:textbox id="txttitle" size="25"

text=<%# container.dataitem("title")%>

runat="server"/>

</edititemtemplate>

</asp:templatecolumn>

<asp:templatecolumn headertext="栏目文件目录">

<itemtemplate>

<%# container.dataitem("folder")%>

</itemtemplate>

<edititemtemplate>

<asp:textbox id="txtfolder" size="14"

text=<%# container.dataitem("folder")%>

runat="server"/>

</edititemtemplate>

</asp:templatecolumn>

<asp:templatecolumn headertext="栏目图标">

<itemtemplate>

<%# container.dataitem("folderimg")%>

</itemtemplate>

<edititemtemplate>

<asp:textbox id="txtfolderimg" size="24"

text=<%# container.dataitem("folderimg")%>

runat="server"/>

</edititemtemplate>

</asp:templatecolumn>

<asp:templatecolumn headertext="栏目名称">

<itemtemplate>

<%# container.dataitem("name")%>

</itemtemplate>

<edititemtemplate>

<asp:textbox id="txtname" size="15"

text=<%# container.dataitem("name")%>

runat="server"/>

</edititemtemplate>

</asp:templatecolumn>

<asp:templatecolumn headertext="操作">

<itemtemplate>

<asp:linkbutton commandname="edit" text="编辑"

runat="server"/>

<asp:linkbutton commandname="delete" text="删除"

runat="server"/>

</itemtemplate>

<edititemtemplate>

<asp:linkbutton commandname="cancel" text="取消"

runat="server"/>

<asp:linkbutton commandname="update" text="更新"

runat="server"/>

</edititemtemplate>

</asp:templatecolumn>

</columns>

</asp:datagrid>

</form>

<!–

列中的 几个linkbutton 的 commandname 可以取 edit,delete,cancel,update 这个名字不能乱取

他和datagrid的 oneditcommand onupdatecommand ondeletecommand oncancelcommand 是相对应的

–>

</body>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 一个操作datagrid绑定xml文件的例子程序-ASP教程,XML相关
分享到: 更多 (0)

相关推荐

  • 暂无文章