-- 作者:mmlxy
-- 发布时间:4/3/2005 5:42:00 AM
-- XML数据更新问题,大家帮忙
我最近在写一个关于xml的程序,读取数据显示在datagrid中没有问题,但时当更新和删除时,就会报错,说文件连接有问题,各位帮帮忙,看看我的程序时什么错误亚!!! Access to the path "c:\inetpub\wwwroot\try1\sample.xml" is denied. Source Error: Line 206: objdata.Tables("record").Rows.Add(dr) Line 207: Line 208: objdata.WriteXML(Server.mappath("sample.xml")) Line 209: LoadXML Line 210: Else 我的程序是 <%@ import Namespace="System.Data.OleDb" %> <%@ import Namespace="System.Data" %> <%@ Page Language="VB" Debug="true" %> <HTML> <HEAD> <script runat="server"> sub Page_Load(sender as Object, E as EventArgs) If NOT IsPostBack Then LoadXML End if End sub sub LoadXML Dim objdata as New DataSet Try objdata.ReadXML(Server.Mappath("sample.xml")) datagrid1.Datasource=objdata datagrid1.Databind() Catch CreateXML End Try End sub Sub CreateXML Dim objdata as New DataSet("root") Dim dt as New DataTable("record") Dim dr as DataRow dt.Columns.Add(New DataColumn("aid")) dt.Columns.Add(New DataColumn("name")) dt.Columns.Add(New DataColumn("dept")) dt.Columns.Add(New DataColumn("salary")) dr=dt.NewRow() dr(0)="1" dr(1)="No Data" dr(2)="No Data" dr(3)="No Data" dt.Rows.Add(dr) objdata.Tables.Add(dt) datagrid1.datasource=objdata datagrid1.databind() objdata.WriteXML(Server.mappath("sample.xml")) LoadXML() End Sub Sub setEditMode(Sender as Object, E as DataGridCommandEventArgs) Dim objdata as New DataSet Dim x1 as string objdata.ReadXML(Server.Mappath("sample.xml")) x1=datagrid1.DataKeys.Item(e.Item.ItemIndex) objdata.Tables("record").DefaultView.RowFilter="aid='" & x1 & "'" If objdata.Tables("record").DefaultView.Count>0 Then error4.visible="False" datagrid1.EditItemIndex=E.Item.ItemIndex datagrid1.showfooter="false" LoadXML Else error4.visible="True" End If End sub Sub cancelEdit(sender as Object, E as DataGridCommandEventArgs) datagrid1.EditItemIndex=-1 datagrid1.showfooter="true" error1.visible="False" error2.visible="False" error3.visible="False" error4.visible="False" error5.visible="False" LoadXML End sub Sub DelXML(S as Object, E as DataGridCommandEventArgs) If e.CommandName="Delete" Then If datagrid1.EditItemIndex=-1 Then error5.visible="False" Dim x1 as string x1=datagrid1.DataKeys.Item(e.Item.ItemIndex) Dim objdata as New DataSet Try objdata.ReadXML(Server.Mappath("sample.xml")) objdata.Tables("record").DefaultView.RowFilter="aid='" & x1 & "'" If objdata.Tables("record").DefaultView.Count>0 Then objdata.Tables("record").DefaultView.Delete(0) End If objdata.Tables("record").DefaultView.RowFilter="" objdata.WriteXML(Server.mappath("sample.xml")) Catch CreateXML End Try LoadXML Else error5.visible="True" End If End if End Sub Sub UpdateXML(s as Object, e as DataGridCommandEventArgs) If e.CommandName="Update" Then Dim str1, str2, str3,v1 as string Dim txt1,txt2,txt3 as Textbox Dim objdata as New DataSet Dim x1 as string objdata.ReadXML(Server.Mappath("sample.xml")) v1=e.Item.ItemIndex x1=datagrid1.DataKeys.Item(e.Item.ItemIndex) objdata.Tables("record").DefaultView.RowFilter="aid='" & x1 & "'" If objdata.Tables("record").DefaultView.Count>0 Then error3.visible="False" txt1=e.Item.FindControl("name_edit") txt2=e.Item.FindControl("dept_edit") txt3=e.Item.FindControl("sal_edit") objdata.Tables("record").Rows(v1).Item("name")=txt1.Text objdata.Tables("record").Rows(v1).Item("dept")=txt2.Text objdata.Tables("record").Rows(v1).Item("salary")=txt3.Text datagrid1.datasource=objdata datagrid1.databind() objdata.WriteXML(Server.mappath("sample.xml")) datagrid1.EditItemIndex=-1 LoadXML datagrid1.showfooter="true" Else error3.visible="True" End If End If End sub Sub doInsert(s as Object, E as DataGridCommandEventArgs) if e.CommandName="doAdd" Then Dim v1 as string Dim tadd1,tadd2,tadd3,tadd4 as Textbox Dim objdata as New DataSet Dim dr as DataRow objdata.ReadXML(Server.Mappath("sample.xml")) tadd1=e.Item.FindControl("aid_add") tadd2=e.Item.FindControl("name_add") tadd3=e.Item.FindControl("dept_add") tadd4=e.Item.FindControl("sal_add") Try tadd1.text=int32.parse(tadd1.text) error2.visible="false" If tadd1.text<1 Then tadd1.Text="" error2.visible="true" End If Catch tadd1.text="" error2.visible="true" End Try If tadd1.Text<>"" and tadd2.Text<>"" and tadd3.Text<>"" and tadd4.Text<>"" Then objdata.Tables("record").DefaultView.RowFilter="aid='" & tadd1.Text & "'" If objdata.Tables("record").DefaultView.Count<=0 Then error1.visible="False" objdata.Tables("record").DefaultView.RowFilter="" dr=objdata.Tables("record").NewRow() dr(0)=tadd1.Text dr(1)=tadd2.Text dr(2)=tadd3.Text dr(3)=tadd4.Text objdata.Tables("record").Rows.Add(dr) objdata.WriteXML(Server.mappath("sample.xml")) LoadXML Else error1.visible="True" error1.Text="Id must be unique" End If End If End If End Sub Private lastVarValue as Integer Function showval(a as integer) lastVarValue = a Return a End Function </script> </HEAD> <body> <form runat="server"> <FONT face="宋体"></FONT> <br> <center> <h2>Working with XML in a Datagrid </h2> </center> <center> </center> <center> <asp:datagrid id="datagrid1" runat="server" Font-Size="8pt" Font-Name="verdana" Cellpadding="3" onUpdateCommand="UpdateXML" OnCancelCommand="cancelEdit" onEditCommand="setEditMode" AutoGenerateColumns="False" onDeleteCommand="delXML" ShowFooter="True" DataKeyField="aid" onItemCommand="doInsert" BorderWidth="1px" BorderColor="#DEBA84" BackColor="#DEBA84" Font-Names="verdana" BorderStyle="None" CellSpacing="2"> <FooterStyle forecolor="#8C4510" backcolor="#F7DFB5"></FooterStyle> <HeaderStyle font-size="8pt" font-names="Arial" font-bold="True" horizontalalign="Center" forecolor="White" backcolor="#A55129"></HeaderStyle> <PagerStyle horizontalalign="Center" forecolor="#8C4510" mode="NumericPages"></PagerStyle> <SelectedItemStyle font-bold="True" forecolor="White" backcolor="#738A9C"></SelectedItemStyle> <ItemStyle forecolor="#8C4510" backcolor="#FFF7E7"></ItemStyle> <Columns> <asp:TemplateColumn HeaderText="Id"> <ItemTemplate> <%# showval(DataBinder.Eval(Container.DataItem,"aid")) %> </ItemTemplate> <FooterTemplate> <asp:Textbox runat="server" id="aid_add" Text='<%# int32.parse(lastVarValue)+1 %>' Columns="2" /> </FooterTemplate> <EditItemTemplate> <%# DataBinder.Eval(Container.DataItem,"aid") %> </EditItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="Name"> <ItemTemplate> <%# DataBinder.Eval(Container.DataItem,"name") %> </ItemTemplate> <FooterTemplate> <asp:TextBox id="name_add" runat="server" Columns="20" /> </FooterTemplate> <EditItemTemplate> <asp:Textbox runat="server" Columns="20" id="name_edit" Text='<%# DataBinder.Eval(Container.DataItem,"name") %>' /> </EditItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="Department"> <ItemTemplate> <%# DataBinder.Eval(Container.DataItem,"dept") %> </ItemTemplate> <FooterTemplate> <asp:TextBox id="dept_add" runat="server" Columns="10" /> </FooterTemplate> <EditItemTemplate> <asp:Textbox runat="server" Columns="15" id="dept_edit" Text='<%# DataBinder.Eval(Container.DataItem,"dept") %>' /> </EditItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn HeaderText="Salary"> <ItemTemplate> <%# DataBinder.Eval(Container.DataItem,"salary") %> </ItemTemplate> <FooterTemplate> <asp:TextBox id="sal_add" runat="server" Columns="10" /> </FooterTemplate> <EditItemTemplate> <asp:Textbox runat="server" Columns="15" id="sal_edit" Text='<%# DataBinder.Eval(Container.DataItem,"salary") %>' /> </EditItemTemplate> </asp:TemplateColumn> <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Update" CancelText="Cancel" EditText="Edit" HeaderText="Edit"></asp:EditCommandColumn> <asp:TemplateColumn HeaderText="Delete"> <ItemTemplate> <asp:LinkButton runat="Server" Text="Delete" CommandName="Delete" /> </ItemTemplate> <FooterTemplate> <asp:LinkButton Text="Add" Runat="Server" CommandName="doAdd" /> </FooterTemplate> </asp:TemplateColumn> </Columns> </asp:datagrid> </center> <center><asp:Label id="error1" runat="server" visible="False" font-names="Tahoma" bordercolor="#FFC080" font-size="Smaller" font-bold="True" forecolor="Red" tooltip="Id must be unique" backcolor="White" width="161px">Error! Id must be unique</asp:Label> </center> <center><asp:Label id="error2" runat="server" visible="False" font-names="Tahoma" bordercolor="#FFC080" font-size="Smaller" font-bold="True" forecolor="Red" tooltip="Id must be numeric within the range of 1 to 99999" backcolor="White" width="402px">Error! Id must be numeric within the range of 1 to 9999</asp:Label> </center> <center><asp:Label id="error3" runat="server" visible="False" font-names="Tahoma" bordercolor="#FFC080" font-size="Smaller" font-bold="True" forecolor="Red" tooltip="The Record you are updating has been deleted by another user!" backcolor="White" width="402px">Error! The Record you are updating has been deleted by another user!</asp:Label> </center> <center><asp:Label id="error4" runat="server" visible="False" font-names="Tahoma" bordercolor="#FFC080" font-size="Smaller" font-bold="True" forecolor="Red" tooltip="The Record you are trying to Edit has been deleted by another user!" backcolor="White" width="402px">Error! The Record you are trying to Edit has been deleted by another user!</asp:Label> </center> <center><asp:Label id="error5" runat="server" visible="False" font-names="Tahoma" bordercolor="#FFC080" font-size="Smaller" font-bold="True" forecolor="Red" tooltip="The Record cannot be deleted while in Edit Mode" backcolor="White" width="402px">Error! The Record cannot be deleted while in Edit Mode</asp:Label> </center> </form> </body> </HTML>
|