jqgrid/mvc 3 - Export zu excel und erstellen ein Datei-download-dialog?

Ich habe gelesen, dass viele Lösungen aber ich habe nicht die Arbeit eines noch.

Mein problem ist ganz einfach,, exportieren von Daten in excel-Datei und ziehen Sie eine Datei-download-dialog.

Jedoch ist die Datei download-dialog nicht angezeigt. Ich konnte die call-Methode von View zu Controller ist falsch, weil ich gedebuggt zu ExportToExcel Funktion und es gibt keine Fehler

Danke im Voraus

Diese Ansicht:

<script type="text/javascript">
    $(document).ready(function () {
        jQuery("#list").jqGrid({
            url: '/documents/List',
            datatype: 'json',
            mtype: 'GET',
            colNames: ['ID', 'File Name', 'Description', 'File', 'Modified', 'File Type', 'Access'],
            colModel: [
                    { name: 'ID', index: 'id', width: 40, align: 'left', key: true, editable: false, editrules: { edithidden: false }, edittype: 'text' },
                    { name: 'FileName', index: 'filename', width: 315, align: 'left', editable: true, edittype: 'text', editrules: { required: true }, formoptions: { elmsuffix: ' *'} },
                    { name: 'Description', index: 'description', width: 210, align: 'left', editable: true, edittype: 'text', editrules: { required: true }, formoptions: { elmsuffix: ' *'} },
                    { name: 'File', index: 'file', hidden: true, enctype: "multipart/form-data", method: "post", editable: true, edittype: 'file', editrules: { edithidden: true, required: true }, formoptions: { elmsuffix: ' *'} },
                    { name: 'Modified', index: 'modified', width: 105, align: 'left', editable: false, edittype: 'text', editoptions: { size: 20, dataInit: function (el) { $(el).datepicker({ dateFormat: 'mm/dd/yy' }); } } },
                    { name: 'FileType', index: 'filetype', width: 210, align: 'left', editable: true, edittype: 'select', editrules: { required: true }, formoptions: { elmsuffix: ' *' },
                        editoptions: { dataUrl: '/HtmlSelectHelper/ConstructDocumentTypeList' }
                    },
                    { name: 'Access', index: 'access', width: 114, align: 'left', editable: true, edittype: 'select', editrules: { required: true }, formoptions: { elmsuffix: ' *' },
                        editoptions: { value: '0:Private;1:Public' }
                    },
               ],
            autowidth: false,
            forceFit: false,
            shrinkToFit: false,
            width: 1024,
            height: 600,
            rowNum: 10,
            rowList: [5, 10, 20, 50, 100],
            pager: jQuery('#pager'),
            sortorder: "desc",
            sortable: true,
            viewrecords: true,
            caption: "Documents List",
            editurl: "/documents/edit"
        });
        jQuery("#list").jqGrid('navGrid', '#pager',
        {
            add: true, edit: true, view: true, del: true
        },
        {
            closeAfterEdit: true,
            closeAfterAdd: true,
            width: 400
        },
        {
            closeAfterEdit: true,
            closeAfterAdd: true,
            width: 400,
            serializeEditData: function (data) { return $.param($.extend({}, data, { id: 0 })); }
        },
        {
    },
        {
            multipleSearch: true
        });

    jQuery("#list").jqGrid('navButtonAdd', '#pager', { caption: "", buttonicon: "ui-icon-calculator", title: "choose columns",
        onClickButton: function () {
            jQuery("#list").jqGrid('columnChooser');
        }
    });

    jQuery("#list").jqGrid('navButtonAdd', '#pager', {
        caption: "", buttonicon: "ui-icon-print", title: "Excel Export",
        onClickButton: function () {
                        $.post("/Documents/ExportToExcel", {}, function () {

                        });
        }
    });

    jQuery("#list").jqGrid('filterToolbar', { stringResult: true, searchOnEnter: true, defaultSearch: "cn" });
});               
</script>

Dies ist Controller:

public ActionResult ExportToExcel()
{
    var documents = db.documents as IEnumerable<document>;

    var grid = new GridView
                   {
                       DataSource = from document in documents
                                    select new
                                               {
                                                   filename = document.filename,
                                                   description = document.description,
                                                   modified = document.modified.ToString(),
                                                   filetype = document.filetype,
                                                   access = document.access
                                               }
                   };

    grid.DataBind();

    Response.ClearContent();
    Response.AddHeader("content-disposition", "inline; filename=Excel.xls");

    Response.ContentType = "application/excel";

    StringWriter sw = new StringWriter();

    HtmlTextWriter htw = new HtmlTextWriter(sw);

    grid.RenderControl(htw);

    Response.Write(sw.ToString());

    Response.End();
    return View("Index");
}
Ich habe wirklich am Ende meine Lösung mit " submit form, es ist der einzige Weg, um download-dialog angezeigt. Ich nicht herausfinden, eine andere Lösung, so weit

InformationsquelleAutor Dranix | 2011-09-28

Schreibe einen Kommentar