I have three datagrids that have dataview's bound to each one which
corresponds to different parts of an XML document. I can edit, cancel but
cannot update the datagrids or the XML file. I see why it isn't updating
but don't understand how to remedy it. The problem is everytime the page
is loaded, the datagrids are rebound with the dataviews from the dataset I
have defined. I've tried using If Not Page.IsPostback to avoid reloading
the grid, but when I do this the grid doesn't appear at all. Any
suggestions?
aspx file:
<%@ Page Language="VB" Debug="True" %>
<%@ import Namespace="System.Data" %>
<script runat="server">
Public objDataSet As New DataSet()
Public strXMLFile As String
Public objDataView1 As New DataView()
Public objDataView2 As New DataView()
Public objDataView3 As New DataView()
Private Sub Page_Load(Source As Object, E As EventArgs)
Call BindDatagrids()
End Sub
Sub BindDatagrids()
If Trim(dlProvince.SelectedItem.Value) <> Trim(strXMLFile)
Then
strXMLFile = dlProvince.SelectedItem.Value
objDataSet.ReadXML(Server.MapPath("/ric/xml/" &
strXMLFile & ".xml"))
End If
Try
objDataView1 = New DataView(objDataSet.Tables
("union"))
dgUnion.DataSource = objDataView1
objDataView2 = New DataView(objDataSet.Tables
("regional_union"))
dgRegionalUnions.DataSource = objDataView2
objDataView3 = New DataView(objDataSet.Tables
("club"))
dgClubs.DataSource = objDataView3
Page.DataBind()
Catch objError As Exception
'Don't need anything
End Try
End Sub
Private Sub DoItemEdit(objSource As Object, objArgs As
DataGridCommandEventArgs)
objSource.EditItemIndex = objArgs.Item.ItemIndex
objsource.Databind()
End Sub
Private Sub DoItemCancel(objSource As Object, objArgs As
DataGridCommandEventArgs)
objSource.EditItemIndex = -1
objsource.Databind()
End Sub
Private Sub DoItemUpdate(objSource As Object, objArgs As
DataGridCommandEventArgs)
objDataSet.WriteXML(Server.MapPath("/ric/xml/" &
strXMLFile & ".xml"))
objSource.EditItemIndex = -1
objsource.Databind()
End Sub
</script>
<html>
<head>
<script language="javascript">
<!--
if (document.layers) {
document.write("<link href='../css/nn4_ric.css'
type='text/css' rel='stylesheet' />");
}
else {
document.write("<link href='../css/ric.css' type='text/css'
rel='stylesheet' />");
}
// -->
</script>
</head>
<body>
<form runat="server">
<asp:DropDownList id="dlProvince" runat="server" ForeColor="White"
BackColor="Black" autopostback="True" CssClass="dropdown">
<asp:ListItem Value="ab"
selected="True">Alberta</asp:ListItem>
<asp:ListItem Value="bc">British Columbia</asp:ListItem>
<asp:ListItem Value="ma">Manitoba</asp:ListItem>
<asp:ListItem Value="nb">New Brunswick</asp:ListItem>
<asp:ListItem Value="nf">Newfoundland</asp:ListItem>
<asp:ListItem Value="ns">Nova Scotia</asp:ListItem>
<asp:ListItem Value="on">Ontario</asp:ListItem>
<asp:ListItem Value="pei">Prince Edward Island</asp:ListItem>
<asp:ListItem Value="qc">Quebec</asp:ListItem>
<asp:ListItem Value="sk">Saskatchewan</asp:ListItem>
</asp:DropDownList>
<h4>Union
</h4>
<asp:DataGrid id="dgUnion" runat="server" ForeColor="White"
BackColor="Black" AutoGenerateColumns="false"
OnUpdateCommand="DoItemUpdate" OnCancelCommand="DoItemCancel"
OnEditCommand="DoItemEdit" BorderWidth="1px">
<EditItemStyle cssclass="editRow" />
<Columns>
<asp:TemplateColumn HeaderText="Union">
<ItemTemplate>
<asp:label text='<%#Container.DataItem("name")%>'
runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:textbox id="txtNameUnion" size="30" Text='<%
#Container.DataItem("name")%>' runat="server" />
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Web Site">
<ItemTemplate>
<asp:label text='<%#Container.DataItem("url")%>'
runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:textbox id="txtUrlUnion" size="30" Text='<%
#Container.DataItem("url")%>' runat="server" />
</EditItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn ButtonType="LinkButton"
UpdateText="Update" CancelText="Cancel"
EditText="Edit"></asp:EditCommandColumn>
</Columns>
</asp:DataGrid>
<h4>Regional Unions
</h4>
<asp:DataGrid id="dgRegionalUnions" runat="server"
ForeColor="White" BackColor="Black" AutoGenerateColumns="false"
OnUpdateCommand="DoItemUpdate" OnCancelCommand="DoItemCancel"
OnEditCommand="DoItemEdit" BorderWidth="1px">
<Columns>
<asp:templatecolumn HeaderText="Regional Union">
<ItemTemplate>
<asp:label text='<%#Container.DataItem("name")%>'
runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:textbox id="txtNameRegional" size="30"
Text='<%#Container.DataItem("name")%>' runat="server" />
</EditItemTemplate>
</asp:templatecolumn>
<asp:templatecolumn HeaderText="Web Site">
<ItemTemplate>
<asp:label text='<%#Container.DataItem("url")%>'
runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:textbox id="txtUrlRegional" size="30" Text='<%
#Container.DataItem("url")%>' runat="server" />
</EditItemTemplate>
</asp:templatecolumn>
<asp:editcommandcolumn EditText="Edit" CancelText="Cancel"
UpdateText="Update"></asp:editcommandcolumn>
</Columns>
</asp:DataGrid>
<h4>Clubs
</h4>
<asp:DataGrid id="dgClubs" runat="server" ForeColor="White"
BackColor="Black" AutoGenerateColumns="false"
OnUpdateCommand="DoItemUpdate" OnCancelCommand="DoItemCancel"
OnEditCommand="DoItemEdit" BorderWidth="1px">
<Columns>
<asp:templatecolumn HeaderText="Club">
<ItemTemplate>
<asp:label text='<%#Container.DataItem("name")%>'
runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:textbox id="txtName" size="30" Text='<%
#Container.DataItem("name")%>' runat="server" />
</EditItemTemplate>
</asp:templatecolumn>
<asp:templatecolumn HeaderText="Club">
<ItemTemplate>
<asp:label text='<%#Container.DataItem("url")%>'
runat="server" />
</ItemTemplate>
<EditItemTemplate>
<asp:textbox id="txtUrl" size="30" Text='<%
#Container.DataItem("url")%>' runat="server" />
</EditItemTemplate>
</asp:templatecolumn>
<asp:editcommandcolumn EditText="Edit" CancelText="Cancel"
UpdateText="Update"></asp:editcommandcolumn>
</Columns>
</asp:DataGrid>
</form>
</body>
</html>
XML File:
<?xml version="1.0" encoding="ISO-8859-1"?>
<rugby>
<union>
<name>New Brunswick Rugby Union</name>
<url>http://www.nbru.ca</url>
</union>
<clubs>
<club>
<name>Moncton Pumphouse RFC</name>
<url>http://monctonrfc.homestead.com</url>
</club>
<club>
<name>UNB Ironmen RFC</name>
<url>http://www.ironmen.ca</url>
</club>
<club>
<name>Saint John Labatt Trojans FRC</name>
<url>http://personal.nbnet.nb.ca/trojans</url>
</club>
<club>
<name>Fredericton Loyalists RFC</name>
<url>http://www3.nb.sympatico.ca/nbrulm/loyal.html</url>
</club>
<club>
<name>STU Stompin' Tommies RFC</name>
<url>http://www3.nb.sympatico.ca/nbrulm/sttommies.html</url>
</club>
<club>
<name>Saint John Molson Canadians RFC</name>
<url>http://www.canadiansrfc.com</url>
</club>
<club>
<name>Saint John Vikings RFC</name>
<url>http://www3.nb.sympatico.ca/nbrulm/sjvikings.html</url>
</club>
<club>
<name>Saint John Bruins RFC</name>
<url>http://www.saintjohn.nbcc.nb.ca/bruinsrugby</url>
</club>
</clubs>
</rugby>