Jul 18, 2011, 9:28 PM
Confirm MessageBox with ButtonsConfig - Master Page - Runtime Error in Microsoft JScript: 'Prixmasol' is undefined
I'm trying to use the implementation of the confirmation dialog with ButtonsConfig, but when I try to call the specified method on the buttons Yes or No, I get the following javascript error "Runtime Error in Microsoft JScript: 'Prixmasol' is undefined".
When I test the example without a MasterPage everything works OK, but when I have a masterpage I always get the same error.
Admin.Master
When I test the example without a MasterPage everything works OK, but when I have a masterpage I always get the same error.
Admin.Master
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Admin.master.cs" Inherits="Admin" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<ext:ResourceManager ID="ResourceManager1" IDMode="Static" runat="server" DirectMethodNamespace="Prixmasol" />
<div>
<ext:Viewport ID="Viewport1" runat="server" Layout="border">
<Items>
<ext:Panel ID="PanelPrincipal" runat="server" Width="300" Border="false" Region="West" Layout="VBox">
<LayoutConfig>
<ext:VBoxLayoutConfig Padding="5" Align="Stretch" />
</LayoutConfig>
<Items>
<ext:Panel ID="PanelSecundario" runat="server" Flex="1" Layout="Accordion" Margins="0 0 15 0">
<LayoutConfig>
<ext:AccordionLayoutConfig OriginalHeader="true" />
</LayoutConfig>
<Content>
<asp:Repeater ID="DinamycMenu" runat="server" >
<ItemTemplate>
<ext:Panel ID="Panel3" runat="server" Title="Item 1" Border="false" />
</ItemTemplate>
</asp:Repeater>
</Content>
<Items>
<ext:Panel ID="Panel3" runat="server" Title="Item 1" Border="false" />
<ext:Panel ID="Panel4" runat="server" Title="Item 2" Border="false" />
<ext:Panel ID="Panel5" runat="server" Title="Item 3" Border="false" />
<ext:Panel ID="Panel6" runat="server" Title="Item 4" Border="false" />
<ext:Panel ID="Panel7" runat="server" Title="Item 5" Border="false" />
</Items>
</ext:Panel>
</Items>
</ext:Panel>
<ext:Panel ID="Panel14" runat="server" Margins="5" Region="Center" Padding="10">
<TopBar>
<ext:Toolbar ID="Toolbar1" runat="server">
<Content>
<asp:LoginView ID="lgview" runat="server">
<LoggedInTemplate>
<asp:LoginStatus ID="LoginStatus1" runat="server" />
<ext:Button ID="btnLogOut" runat="server" Text="Cerrar Sessión" Icon="LockOpen" />
</LoggedInTemplate>
</asp:LoginView>
</Content>
</ext:Toolbar>
</TopBar>
<Content>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</Content>
</ext:Panel>
</Items>
</ext:Viewport>
</div>
</form>
</body>
</html>
ConfiguracionBD.aspx<%@ Page Title="" Language="C#" MasterPageFile="~/Configuracion/Admin.master" AutoEventWireup="true"
CodeFile="ConfiguracionBD.aspx.cs" Inherits="Configuracion_ConfiguracionBD" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
<script language="javascript" src="../js/jquery-1.4.1.js" type="text/javascript"></script>
<script language="javascript" src="../js/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<script type="text/javascript">
var notifyDrop = function(dd, e, data) {
$("#<%=txtBaseDatos.ClientID%>").val(data.node.attributes.BaseDatos);
$("#<%=txtDataSource.ClientID %>").val(data.node.attributes.Datasource);
$("#<%=txtPuerto.ClientID%>").val(data.node.attributes.Puerto);
$("#<%=txtUsuario.ClientID%>").val(data.node.attributes.Usuario);
$("#<%=txtPassword.ClientID%>").val(data.node.attributes.Password);
$("#<%=txtServidor.ClientID%>").val(data.node.attributes.Servidor);
$("#<%=txtNombre.ClientID%>").val(data.node.attributes.NombreCadena);
$("#<%=cmbTipoBD.ClientID%>").val(data.node.attributes.TipoConexion);
return true;
}
</script>
<div>
<ext:Store ID="stTipoDB" runat="server">
<Reader>
<ext:ArrayReader>
<Fields>
<ext:RecordField Name="Valor" />
<ext:RecordField Name="Texto" />
</Fields>
</ext:ArrayReader>
</Reader>
</ext:Store>
<ext:Panel ID="Panel1" runat="server" AutoWidth="true" Height="500" Layout="Border">
<Content>
<ext:TreePanel ID="ArbolConexiones" runat="server" EnableDrag="true" DDGroup="tree2div"
Region="West" Split="true" Margins="5 0 5 5" Width="200" Title="Conexiones Disponibles"
AutoScroll="true" Collapsible="true">
<Listeners>
<StartDrag Handler="Ext.fly('drop-target').applyStyles({'background-color':'#f0f0f0'});" />
<EndDrag Handler="Ext.fly('drop-target').applyStyles({'background-color':'white'});" />
</Listeners>
<Buttons>
<ext:Button runat="server" ID="btnNuevaConect" Icon="DatabaseAdd" Text="Nueva Conexion">
<DirectEvents>
<Click OnEvent="btnNuevaConect_Click">
<EventMask ShowMask="true" Msg="Espere un Momento por favor..." MinDelay="1000" />
</Click>
</DirectEvents>
</ext:Button>
</Buttons>
</ext:TreePanel>
<ext:Panel ID="Panel2" runat="server" Title="Target" Region="Center" Margins="5 5 5 0">
<Content>
<div id="drop-target" style="border: 1px silver solid; margin: 20px; padding: 8px;
height: 100%">
<ext:FormPanel ID="frm" runat="server" Title="Configuración de Base de Datos" MonitorPoll="500"
MonitorValid="true" Region="Center" Padding="5" AutoWidth="true" AutoHeight="true"
ButtonAlign="Right" Layout="FormLayout">
<Items>
<ext:TextField ID="txtNombre" runat="server" FieldLabel="Nombre de Conexion" AllowBlank="false"
AnchorHorizontal="100%" />
<ext:TextField ID="txtServidor" runat="server" FieldLabel="Servidor" AnchorHorizontal="100%" />
<ext:TextField ID="txtBaseDatos" runat="server" FieldLabel="Base de Datos" AnchorHorizontal="100%" />
<ext:TextField ID="txtDataSource" runat="server" FieldLabel="Data Source" AnchorHorizontal="100%" />
<ext:TextField ID="txtPuerto" runat="server" FieldLabel="Puerto" AnchorHorizontal="100%" />
<ext:TextField ID="txtUsuario" runat="server" FieldLabel="Usuario" AnchorHorizontal="100%" />
<ext:TextField ID="txtPassword" runat="server" FieldLabel="Password" InputType="Password"
AnchorHorizontal="100%" />
<ext:ComboBox ID="cmbTipoBD" runat="server" StoreID="stTipoDB" Editable="false" DisplayField="Texto"
ValueField="Valor" TypeAhead="true" Mode="Local" ForceSelection="true" EmptyText="Seleccione un Motor de BD"
Resizable="true" SelectOnFocus="true" FieldLabel="Tipo de Base de Datos" />
</Items>
<Buttons>
<ext:Button ID="btnGuardar" runat="server" Text="Guardar" Icon="Disk">
<DirectEvents>
<Click OnEvent="btnGuardar_OnClick">
</Click>
</DirectEvents>
</ext:Button>
<ext:Button ID="btnProbar" runat="server" Icon="DatabaseStart" Text="Probar Conexion">
<DirectEvents>
<Click OnEvent="btnProbar_Click">
<EventMask ShowMask="true" Msg="Realizando Prueba de Conexión" MinDelay="1000" />
</Click>
</DirectEvents>
</ext:Button>
</Buttons>
</ext:FormPanel>
</div>
</Content>
</ext:Panel>
</Content>
</ext:Panel>
<ext:DropTarget ID="DropTarget1" runat="server" Target="drop-target" Group="tree2div">
<NotifyDrop Fn="notifyDrop" />
</ext:DropTarget>
</div>
</asp:Content>
ConfiguracionBD.aspx.cs
public void btnGuardar_OnClick(object sender, EventArgs e)
{
if (!txtNombre.Text.Contains(" "))
{
Global glb = new Global();
if (glb.Conexiones.ListaConexiones.First(a => a.NombreCadena == txtNombre.Text) != null)
{
MessageBox msg = new MessageBox();
msg.Confirm("Message", "La conexion ya existe, ¿Desea guardar y sobreescribir los datos?", new MessageBoxButtonsConfig
{
Yes = new MessageBoxButtonConfig
{
Text = "Si, Guardar.",
Handler = "Prixmasol.OKGuardar()"
},
No = new MessageBoxButtonConfig
{
Text = "No, no estoy seguro"
}
});
msg.Show();
}
else
{
OKGuardar();
}
}
else
{
throw new Exception("El Nombre no puede tener espacios");
}
}
[DirectMethod(Namespace="Prixmasol")]
private void OKGuardar()
{
Prixmasol.Utils.Global glb = new Prixmasol.Utils.Global();
Prixmasol.Utils.NodoCadenaServidor nd = new Prixmasol.Utils.NodoCadenaServidor();
nd.NombreCadena = this.txtNombre.Text;
nd.BaseDatos = this.txtBaseDatos.Text;
nd.DataSource = this.txtDataSource.Text;
nd.Puerto = this.txtPuerto.Text;
nd.Servidor = this.txtServidor.Text;
nd.TipoConexion = (Prixmasol.Utils.TipoBaseDatos)Enum.Parse(typeof(Prixmasol.Utils.TipoBaseDatos), this.cmbTipoBD.SelectedItem.Value);
nd.Usuario = this.txtUsuario.Text;
nd.Password = this.txtPassword.Text;
glb.Conexiones.ListaConexiones.Add(nd);
glb.Conexiones.GrabarArchivoConexiones();
Response.Redirect(Request.Url.AbsoluteUri);
}
}