Wrox Home  
Search P2P Archive for: Go

  Return to Index  

aspx_professional thread: Can't Update Datagrid or XML File Bound to It


Message #1 by "Nick Taylor" <nicktaylor@s...> on Fri, 28 Feb 2003 14:05:26
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>

  Return to Index