I have to trim out alot of references/logic specific to our internal controls library so I hope this still compiles and works. The most important part is removing the listener for 'render' and adding a listener to 'show'.
Javascrpt file
Ext.ux.DialogWindow = Ext.extend(Ext.Window, {
urlParams: {},
reloadOnShow: true,
initComponent: function() {
Ext.ux.Dialogwindow.superclass.initComponent.call(this);
if (this.autoLoadIFrame) {
//remove listener that loads iframe on render
this.un('render', this.doIFrameAutoLoad);
//add listener to load iframe on show instead
this.on('show', this.doIFrameAutoLoad, this);
}
},
destroy: function() {
Ext.ux.Dialogwindow.superclass.destroy.call(this);
},
doIFrameAutoLoad: function() {
if ((this.reloadOnShow) || (Ext.isEmpty(this.iframe))) {
this.loadIFrame(this.getFullIFrameURL());
}
},
refreshIFrame: function() {
if (!Ext.isEmpty(this.iframe)) {
this.loadIFrame(this.getFullIFrameURL());
}
},
getFullIFrameURL: function() {
var url = this.autoLoadIFrame;
var params = this.getURLParamsQueryString();
if (params.length > 0) {
url = url + '?' + params;
}
return url;
},
getURLParamsQueryString: function() {
var sb = '';
var isFirst = true;
//make sure win id is part of params
this.urlParams.winID = this.id;
// loop through param to create param1=value1&param2=value2...
for (var param in this.urlParams) {
var value = this.urlParams[param];
if ((value) && (value.length > 0)) {
if (isFirst) {
isFirst = false
}
else {
sb = sb + '&';
}
sb = sb + param + '=' + this.urlParams[param];
}
}
return sb;
}
});
Ext.reg('dialog', Ext.ux.DialogWindow);
Server file
Imports Coolite.Ext.Web
Imports System.ComponentModel
Imports System.Drawing
Imports System.Web.UI
<Assembly: WebResource("MyCoolite.Dialogwindow.js", "application/x-javascript")>
Namespace Controls
<ClientScript(Type:=GetType(DialogWindow), WebResource:="MyCoolite.Dialogwindow.js")> _
<ToolboxData("<{0}:DialogWindow runat=""server""></{0}:DialogWindow>")> _
<Xtype("dialog")> _
<InstanceOf(ClassName:="Ext.ux.DialogWindow")> _
<ParseChildren(True)> _
<PersistChildren(False)> _
<System.ComponentModel.Designer(GetType(EmptyDesigner))> _
Public Class DialogWindow
Inherits Window
#Region " Constructor "
Public Sub New()
MyBase.New()
Me.ShowOnLoad = False
Me.ShowIFrameMask = True
Me.Modal = True
End Sub
#End Region
#Region " Properties "
#Region " Client Config "
Private _ReloadOnShow As Boolean = True
''' <summary>
''' Toggle whether iframe will reload everytime window is shown
''' </summary>
<ClientConfig("reloadOnShow")> _
<DefaultValue(True)> _
<Category("Config Options")> _
Public Property ReloadOnShow() As Boolean
Get
Return _ReloadOnShow
End Get
Set(ByVal value As Boolean)
_ReloadOnShow = value
End Set
End Property
Private _URLParams As New Dictionary(Of String, String)
''' <summary>
''' Query string parameters to send to dialog
''' </summary>
<ClientConfig("urlParams", GetType(JsonConverters.StringDictionaryJsonConverter))> _
<DefaultValue(CType(Nothing, Object))> _
<Category("Config Options")> _
Public ReadOnly Property URLParams() As Dictionary(Of String, String)
Get
If _URLParams Is Nothing Then _URLParams = New Dictionary(Of String, String)
Return _URLParams
End Get
End Property
#End Region
#End Region
#Region " Life Cycle "
#End Region
#Region " Methods "
#End Region
End Class
End Namespace
JsonConverter
Imports System
Imports Coolite.Utilities
Imports Newtonsoft.Json
Namespace JsonConverters
Public Class StringDictionaryJsonConverter
Inherits JsonConverter
Public Overloads Overrides Function CanConvert(ByVal valueType As Type) As Boolean
Return GetType(Dictionary(Of String, String)).IsAssignableFrom(valueType)
End Function
Public Overloads Overrides Sub WriteJson(ByVal writer As JsonWriter, ByVal value As Object)
Dim dictionary As Dictionary(Of String, String) = TryCast(value, Dictionary(Of String, String))
If dictionary IsNot Nothing Then
Dim iterator As Dictionary(Of String, String).Enumerator = dictionary.GetEnumerator()
writer.WriteStartObject()
While iterator.MoveNext()
writer.WritePropertyName(iterator.Current.Key)
writer.WriteValue(iterator.Current.Value)
End While
writer.WriteEndObject()
End If
End Sub
Public Overloads Overrides Function ReadJson(ByVal reader As Newtonsoft.Json.JsonReader, ByVal objectType As Type) As Object
Throw New NotImplementedException()
End Function
End Class
End Namespace