Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/12/2007, 13:12
rafafve
 
Fecha de Ingreso: agosto-2007
Mensajes: 21
Antigüedad: 16 años, 8 meses
Puntos: 0
ajaxToolkit:ModalPopupExtender y updatepanel

Hola, espero me puedan ayudar porque me estoy volviendo loco :( Desde ya, muchas gracias!

La situación es la siguiente:

En un .aspx tengo:

- gridview, donde muestro una lista de productos

- botón Nuevo producto que abre un diálogo modal de ajax, solicitando el detalle del producto a incorporar

En el diálogo modal, además de los campos de texto donde se solicita el detalle del producto, existen 2 botones (guardar y cancelar).


Lo que intento es que al pulsar el botón guardar, se actualice el gridview, mostrando el nuevo producto. El problema que tengo es que he incorporado en el panel del popup un updatepanel, para evitar que me haga al pulsar Guardar un postback completo, pero entonces nunca se ejecutan los eventos del botón...Alguien sabe el motivo?


El código del html es:

<form id="form1" runat="server">
<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/products.xml">
</asp:XmlDataSource>
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" >
</asp:ScriptManager>
<div>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:gridview ID="Gridview1" runat="server" AutoGenerateColumns="False" DataSourceID="XmlDataSource1">
<Columns>
<asp:BoundField DataField="productID" HeaderText="productID" SortExpression="productID" />
<asp:BoundField DataField="productName" HeaderText="productName" SortExpression="productName" />
<asp:BoundField DataField="unitPrice" HeaderText="unitPrice" SortExpression="unitPrice" />
</Columns>
</asp:gridview>
</ContentTemplate>
</asp:UpdatePanel>

<asp:Panel ID="pnlPopup" runat="server" Style="display: none" CssClass="modalPopup">
<asp:Panel ID="Panel3" runat="server" Style="cursor: move;background-color:#DDDDDD;border:solid 1px Gray;color:Black">
<div>
<p>Introduce los datos del buevo producto:</p>
</div>
</asp:Panel>
<asp:UpdatePanel runat="server" UpdateMode="Conditional" >
<ContentTemplate>
id: <asp:textbox ID="txtID" runat="server"></asp:textbox>
desc: <asp:textbox ID="txtDesc" runat="server"></asp:textbox>
precio: <asp:textbox ID="txtPrecio" runat="server"></asp:textbox>
<asp:Button Text="Guardar Cambios" runat="server" ID="btnGuardar" OnClick="guardar"/>
<asp:Button Text="Cancelar" runat="server" ID="btnCerrar"/>
</ContentTemplate>
</asp:UpdatePanel>

</asp:Panel>
<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server" PopupControlID="pnlPopup" TargetControlID="btnAnadir" BackgroundCssClass="modalBackground" X="200" Y ="200" CancelControlID="btnCerrar">
</ajaxToolkit:ModalPopupExtender>
<asp:button ID="btnAnadir" Text = "Añadir producto" runat="server" />
</div>

</form>


y el code-behind:
Protected Sub guardar(ByVal sender As Object, ByVal e As System.EventArgs)

Dim myxml As XmlDocument = New XmlDocument
Try
myxml.Load(Server.MapPath("products.xml"))
Catch ex As Exception
Response.Write("excepcion: " & ex.Message)
End Try
Dim myxmlrecord As XmlElement = myxml.CreateElement("product")
Dim myxmlfield1 As XmlAttribute
Dim myxmlfield2 As XmlAttribute
Dim myxmlfield3 As XmlAttribute

myxmlfield1 = myxml.CreateAttribute("productID")
myxmlfield1.Value = Me.txtID.Text
myxmlrecord.Attributes.Append(myxmlfield1)

myxmlfield2 = myxml.CreateAttribute("productName")
myxmlfield2.Value = Me.txtDesc.Text
myxmlrecord.Attributes.Append(myxmlfield2)

myxmlfield3 = myxml.CreateAttribute("unitPrice")
myxmlfield3.Value = Me.txtPrecio.Text
myxmlrecord.Attributes.Append(myxmlfield3)


myxml.DocumentElement.AppendChild(myxmlrecord)

myxml.Save(Server.MapPath("products.xml"))
myxml = Nothing


'volver a hacer el bind
'Gridview1.DataBind()

End Sub
End Class

Alguien me podría decir que hago mal?


Un millón de gracias!