但是现在还不能对一个没有记录的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)
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
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
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