Wrox Home  
Search P2P Archive for: Go

  Return to Index  

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


Message #1 by "Einar Paul Qvale" <einar.paul.qvale@f...> on Sun, 2 Mar 2003 11:42:42 +0100
Change enableviewstate to true on your datagrid

-----Original Message-----
From: Nick Taylor [mailto:nicktaylor@s...]
Sent: 4. mars 2003 18:15
To: ASPX_Professional
Subject: [aspx_professional] Re: SV: Can't Update Datagrid or XML File
Bound to It


I understand what you're saying and it makes sense, but it doesn't work.
I
did some debugging the other day and realized that the edit event only
fires after the page_load (like you said). So I did what you suggested
but
as soon as the datagrids do not bind in the page_load (when Not
Page.IsPostBack), the OnEdit event for the datagrid never fires. I also
noticed that my OnUpdate event never fires as well. Any other ideas? You

can try out this code if you go to www.rugbyincanada.com/test.aspx . You

can also see my old code when the edit event fires by going to
www.rugbyincanada.com/test2.aspx .
Below is the code with your suggestions:

<%@ import Namespace=3D"System.Data" %>
<script runat=3D"server">
	Public objDataSet As New DataSet()=09
	Public strXMLFile As String
	 
	Sub Page_Load(Source As Object, E As EventArgs)
		=09
			Call Alert("Page_Load")
			If Not Page.IsPostBack Then
				Call BindDatagrids		=09
			End If
	End Sub
=09
	Private Sub BindDatagrids()
	=09
		If Trim(dlProvince.SelectedItem.Value) <>
Trim(strXMLFile)
Then    
			strXMLFile =3D dlProvince.SelectedItem.Value
	         
			objDataSet.ReadXML(Server.MapPath("/ric/xml/" &
strXMLFile & ".xml"))
		End If
	=09
		Try
			dgUnion.DataSource =3D objDataSet.Tables("union")=09
	=09
			dgRegionalUnions.DataSource =3D objDataSet.Tables
("regional_union")          
			dgClubs.DataSource =3D objDataSet.Tables("club")=09
		   		  		  
			Page.DataBind()
		Catch objError As Exception
			'Don't need anything
		Finally
			'Don't need anything
		End Try=09
	End Sub
	 
	Private Sub DoItemEdit(objSource As Object, objArgs As
DataGridCommandEventArgs)
=09
		Call Alert("Edit")	=09
		objSource.EditItemIndex =3D objArgs.Item.ItemIndex
		Call BindDatagrids	=09
	End Sub
=09
	Private Sub DoItemCancel(objSource As Object, objArgs As
DataGridCommandEventArgs)
  
   		Call Alert("Cancel")
		objSource.EditItemIndex =3D -1
		Call BindDatagrids				=09
=09
	End Sub
=09
	Private Sub DoItemUpdate(objSource As Object, objArgs As
DataGridCommandEventArgs)
	=09
		Dim Name As Textbox
		Dim URL As Textbox
			=09
		Name =3DobjArgs.Item.FindControl("txtNameUnion")
		URL =3DobjArgs.Item.FindControl("txtUrlUnion")
	=09
		Call Alert(Name.Text & " " & URL.Text)	=09
		objDataSet.WriteXML(Server.MapPath("/ric/xml/" &
strXMLFile & ".xml"))
		objSource.EditItemIndex =3D -1
		Call BindDatagrids				=09
		=09
	End Sub=09
=09
	Private Function Alert(pstrString As String) As String
	=09
		Response.Write("<scr" & "ipt language=3D'javascript'>alert
('" & pstrString & "');</scr" & "ipt>")
	End Function
</script>
<html>
<head>
    <script language=3D"javascript">
    <!--
        if (document.layers) {
            document.write("<link href=3D'../css/nn4_ric.css'
type=3D'text/css' rel=3D'stylesheet' />");
        }
       
        else {
            document.write("<link href=3D'../css/ric.css' 
type=3D'text/css'
rel=3D'stylesheet' />");
        }
    // -->
    </script>
</head>
<body>
    <form runat=3D"server">
        <asp:DropDownList id=3D"dlProvince" runat=3D"server"
autopostback=3D"True" CssClass=3D"dropdown">
			<asp:ListItem Value=3D"ab"
selected=3D"True">Alberta</asp:ListItem>
            <asp:ListItem Value=3D"bc">British Columbia</asp:ListItem>
            <asp:ListItem Value=3D"ma">Manitoba</asp:ListItem>
            <asp:ListItem Value=3D"nb">New Brunswick</asp:ListItem>
            <asp:ListItem Value=3D"nf">Newfoundland</asp:ListItem>
            <asp:ListItem Value=3D"ns">Nova Scotia</asp:ListItem>
            <asp:ListItem Value=3D"on">Ontario</asp:ListItem>
            <asp:ListItem Value=3D"pei">Prince Edward
Island</asp:ListItem>
            <asp:ListItem Value=3D"qc">Quebec</asp:ListItem>
            <asp:ListItem Value=3D"sk">Saskatchewan</asp:ListItem>
        </asp:DropDownList>
        <h4>Union
        </h4>
        <asp:DataGrid id=3D"dgUnion" EnableViewState=3D"false"
runat=3D"server"
ForeColor=3D"White" BackColor=3D"Black" OnEditCommand=3D"DoItemEdit"
OnCancelCommand=3D"DoItemCancel" OnUpdateCommand=3D"DoItemUpdate"
AutoGenerateColumns=3D"false" BorderWidth=3D"1px">
            <EditItemStyle cssclass=3D"editRow" />
            <Columns>
                <asp:TemplateColumn HeaderText=3D"Union">
                    <ItemTemplate>
                        <asp:label
text=3D'<%#Container.DataItem("name")%>'
runat=3D"server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:textbox id=3D"txtNameUnion" size=3D"30"
Text=3D'<% #Container.DataItem("name")%>' runat=3D"server" />
                    </EditItemTemplate>
                </asp:TemplateColumn>
                <asp:TemplateColumn HeaderText=3D"Web Site">
                    <ItemTemplate>
                        <asp:label 
text=3D'<%#Container.DataItem("url")%>'

runat=3D"server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:textbox id=3D"txtUrlUnion" size=3D"30" 
Text=3D'<%
#Container.DataItem("url")%>' runat=3D"server" />
                    </EditItemTemplate>
                </asp:TemplateColumn>
                <asp:EditCommandColumn ButtonType=3D"LinkButton"
UpdateText=3D"Update" CancelText=3D"Cancel"
EditText=3D"Edit"></asp:EditCommandColumn>
            </Columns>
        </asp:DataGrid>
        <h4>Regional Unions
        </h4>
        <asp:DataGrid id=3D"dgRegionalUnions" EnableViewState=3D"false"
runat=3D"server" ForeColor=3D"White" BackColor=3D"Black"
OnEditCommand=3D"DoItemEdit" OnCancelCommand=3D"DoItemCancel"
OnUpdateCommand=3D"DoItemUpdate" AutoGenerateColumns=3D"false"
BorderWidth=3D"1px">
            <Columns>
                <asp:templatecolumn HeaderText=3D"Regional Union">
                    <ItemTemplate>
                        <asp:label
text=3D'<%#Container.DataItem("name")%>'
runat=3D"server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:textbox id=3D"txtNameRegional" size=3D"30"
Text=3D'<%#Container.DataItem("name")%>' runat=3D"server" />
                    </EditItemTemplate>
                </asp:templatecolumn>
                <asp:templatecolumn HeaderText=3D"Web Site">
                    <ItemTemplate>
                        <asp:label 
text=3D'<%#Container.DataItem("url")%>'

runat=3D"server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:textbox id=3D"txtUrlRegional" size=3D"30"
Text=3D'<% #Container.DataItem("url")%>' runat=3D"server" />
                    </EditItemTemplate>
                </asp:templatecolumn>
                <asp:editcommandcolumn EditText=3D"Edit"
CancelText=3D"Cancel"
UpdateText=3D"Update"></asp:editcommandcolumn>
            </Columns>
        </asp:DataGrid>
        <h4>Clubs
        </h4>
        <asp:DataGrid id=3D"dgClubs" EnableViewState=3D"false"
runat=3D"server"
ForeColor=3D"White" BackColor=3D"Black" OnEditCommand=3D"DoItemEdit"
OnCancelCommand=3D"DoItemCancel" OnUpdateCommand=3D"DoItemUpdate"
AutoGenerateColumns=3D"false" BorderWidth=3D"1px">
            <Columns>
                <asp:templatecolumn HeaderText=3D"Club">
                    <ItemTemplate>
                        <asp:label
text=3D'<%#Container.DataItem("name")%>'
runat=3D"server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:textbox id=3D"txtName" size=3D"30" 
Text=3D'<%
#Container.DataItem("name")%>' runat=3D"server" />
                    </EditItemTemplate>
                </asp:templatecolumn>
                <asp:templatecolumn HeaderText=3D"Club">
                    <ItemTemplate>
                        <asp:label 
text=3D'<%#Container.DataItem("url")%>'

runat=3D"server" />
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:textbox id=3D"txtUrl" size=3D"30" 
Text=3D'<%
#Container.DataItem("url")%>' runat=3D"server" />
                    </EditItemTemplate>
                </asp:templatecolumn>
                <asp:editcommandcolumn EditText=3D"Edit"
CancelText=3D"Cancel"
UpdateText=3D"Update"></asp:editcommandcolumn>
            </Columns>
        </asp:DataGrid>
    </form>
</body>
</html>

> When you click Edit, your DoItemEdit method is fired on the server.
> Here
you need to add the call to your BindDatagrids method. Therefore you
also need the check for IsPostBack in Page_Load.

Page_Load always fires before server events fired by page components

  Return to Index