views:

60

answers:

2

How do I create a Javascript method in here that RELOADS the .aspx page, that I can call during one of those other existing methods.

    <%@ Page Language="VB" Inherits="Core.Web.BaseView(OfLending.Controllers.Workspace.DocumentUploadData)" %>
    <%@ Import Namespace="Framework.WebControls.Forms" %>
    <%@ Import Namespace="Framework.WebControls.Grids" %>

    <script runat="server">

    </script>

    <html xmlns="http://www.w3.org/1999/xhtml"&gt;
    <head runat="server">
        <title></title>
        <script language="javascript" type="text/javascript">

            function RefreshGrid(result, data) {
                if (data.responseText.length > 0) {
                    var obj = eval('(' + data.responseText + ')');
                    if (obj.Result == false) {
                        Global.alertError(obj.UserMessage, obj.ExceptionID);
                    }
                    else {
                        Global.getComponent('txtDescription').setValue('');
                        mygrid.refresh();
                    }
                }
            }

            var uploadWindow
            var showUploadWindow = function() {
                if (!uploadWindow) {
                    uploadWindow = new Ext.Window({
                        title: 'Attach Document'
                        , width: 450
                        , height: 140
                        , closable: true
                        , closeAction: 'hide'
                        , iconCls: ''
                        , layout: 'form'
                        , bodyStyle: 'padding:10px 10px 0px 2px'
                        , labelWidth: 100
                        , labelAlign: 'right'
                        , renderTo: DocumentUploadForm_FormViewPort.getEl()
                        , constrain: true
                        , modal: true
                        , items: [{
                            xtype: 'textfield'
                            , validationEvent: 'blur'
                            , enableKeyEvents: true
                            , anchor: '100%'
                            , fieldLabel: '* Select File'
                            , labelStyle: 'color:red'
                            , el: 'fuDocument'
                            , id: 'fuDocument'
                            , allowBlank: false
                            , blankText: 'File Upload is a required field'
                            , inputType: 'file'
                        }, {
                            xtype: 'textfield'
                            , anchor: '100%'
                            , fieldLabel: 'Description'
                            , id: 'txtDescription'
                            , allowDecimals: false
                            , decimalPrecision: 0
                            , maxLength: 100
                            , maxLengthText: 'Description must be no more than 100 characters in length'
                        }]
                        , buttonAlign: 'center'
                        , fbar: [{
                            text: 'Save', iconCls: 'icon-button-save', handler: function() { uploadDocument() }
                        }, {
                            text: 'Cancel', iconCls: 'icon-button-cancel', handler: function() { uploadWindow.hide() }
                           }]
                        })
                    }
                    uploadWindow.show();
                    mapEnterKey(uploadWindow);
                }

            function viewContent() {
                var docId = mygrid.getSelectedString('DocumentId');
                window.location = "Edit/" + docId;
            }

            function uploadDocument() {
                uploadWindow.hide();
                DocumentUploadForm.doAction('SAVE')
                mygrid.refresh();
            }

            //this function maps enter key
            function mapEnterKey(obj) {
                var keyMap = new Ext.KeyMap(obj.getEl(), {
                    key: Ext.EventObject.ENTER,
                    stopEvent: true,
                    handler: uploadDocument
                });
            }

        </script>
    </head>
    <body>
        <form id="form1" runat="server">

            <div style="display:none">
                <asp:FileUpload ID="fuDocument" runat="server"  />
            </div>

            <% 
                Using DocumentUploadForm As New WebControls.Forms.Form()
                    With DocumentUploadForm
                        .ID = "DocumentUploadForm"
                        .Framed = False
                        .ItemName = "Document"
                        .Title = "Application Documents"
                        .TitleStyle = Forms.Form.TitleStyleType.TitleBar
                        .IconCls = "icon-blank-16"
                        .OnSubmitCallback = "RefreshGrid"
                        .Toolbar.UseDefaultButtons = False

                        With .CenterRegion
                            Using mygrid As New WebControls.Grids.Grid()
                                With mygrid
                                    .ID = "mygrid"

                                    .GridItemName = "document"
                                    .Title = "Uploaded Documents"
                                    .Mode = Grid.GridMode.Tab
                                    .OnDoubleClick = "viewContent"
                                    .SetEditPage("Workspace/DocumentUpload.mvc", "DocumentId")

                                    With .Toolbar
                                        .AllowSearch = False
                                        .UseDefaultButtons = False
                                        With .AddButton("Attach Document", "function(){showUploadWindow();}")
                                            .RequiresRowSelection = False
                                            .IconClass = "icon-button-create"
                                        End With
                                        With .AddButton(Grids.Grid.GridToolbar.ButtonType.Edit)
                                            .Text = "View Document"
                                            .Handler = "viewContent"
                                            .IconClass = "icon-button-preview"
                                        End With
                                        With .AddButton(Grids.Grid.GridToolbar.ButtonType.Delete)
                                            .Text = "Delete Document"
                                        End With
                                        .PushItems()
                                        With .AddButton("Close Window", "function(){window.close()}")
                                            .RequiresRowSelection = False
                                            .IconClass = "icon-button-cancel"
                                        End With
                                    End With

                                    .Columns.AddHidden("DocumentId")
                                    .Columns.Add("Name", "Name", Grid.ColumnDataType.String, 200)
                                    .Columns.Add("Description", "Description", Grid.ColumnDataType.String, 450)

                                    .DataSource = ViewData("Documents")
                                    .DataBind()
                                    Response.Write(.ToString())
                                End With
                            End Using
                            .AddControl("mygrid", "Documents", Forms.Control.ControlType.Grid)
                        End With


                    End With

                    Response.Write(DocumentUploadForm.ToString())
                End Using
            %>

        </form>
    </body>
    </html>
A: 

the refresh() function should be called on GridView (Check Ext Docs). So, if "mygrid" is your GridPanel, then call it this way :

mygrid.getView().refresh();
Swar
getting this error. mygrid.getView is not a function
Scott
If "mygrid" is a GridPanel, then there should be getView() method. Check mygrid in console - whether there is any getView() method or not. Check refresh() method in GridView API - http://dev.sencha.com/deploy/dev/docs/?class=Ext.grid.GridView
Swar
I believe the window that is popped up is an ExtJS window, however I think the grid on the parent page is just a regular ASP.NET grid. The code for mygrid.refresh(); gave no error but isnt working. I just want a way to hard refresh the parent .aspx page from the ExtJS popup.
Scott
A: 

Figured it out. Change RefreshGrid() to this.

function RefreshGrid(result, data) {
                window.location.reload();
                if (data.responseText.length > 0) {
                    var obj = eval('(' + data.responseText + ')');
                    if (obj.Result == false) {
                        Global.alertError(obj.UserMessage, obj.ExceptionID);
                    }
                    else {
                        Global.getComponent('txtDescription').setValue('');
                    }
                }
            }
Scott