jqGrid Экспорт в Excel в ASP.net 2.0 - PullRequest
0 голосов
/ 30 июля 2010

эй, я не использую шаблон MVC.Я использую только ASP.net 2.0 C #.Я использую версию jqGrid 3.6.

Я знаю, что есть одно свойство excelexport, которое должно быть установлено в true, и мы должны добавить одну пользовательскую кнопку, и при нажатии этой кнопки мне нужно вызвать метод jqgrid.excelExport,но я должен отправить сложный объект на страницу, как я могу отправить его?Я не хочу отправлять параметры поиска в виде строки запроса, потому что мои параметры поиска будут слишком длинными.

1 Ответ

4 голосов
/ 20 августа 2010

Вы можете создать это в коде C #:

protected void btnExcel_Click(object sender, EventArgs e)
    {

        string codigo;
        codigo = hdnHtml.Value;

        StringBuilder sb = new StringBuilder();

        StringWriter sw = new StringWriter(sb);

        HtmlTextWriter htw = new HtmlTextWriter(sw);

        Page pagina = new Page();

        HtmlForm form = new HtmlForm();

        Response.Clear();

        Response.Buffer = true;

        Response.ContentType = "application/vnd.ms-excel";

        Response.AddHeader("Content-Disposition", "attachment;filename=Visor.xls");

        Response.Charset = "UTF-8";

        Response.ContentEncoding = Encoding.Default;


        pagina.EnableEventValidation = false;

        pagina.DesignerInitialize();

        pagina.Controls.Add(form);

        pagina.RenderControl(htw);

        Response.Write(codigo);

        Response.End();



    }    

}

В приведенном ниже коде вы можете повторить это.

Добавить к пропиерам страницы:

ValidateRequest = "ложь"

 <asp:Button ID="btnExcel" runat="server" Text="Export" 
                    onclick="btnExcel_Click" /> //create a button

<asp:HiddenField ID="hdnHtml" runat="server" /> // create a  hiddenField


$('[id$=btnExcel]').hide(); // hide the button with jquery function


function exportXls() {

    var tbody = $("#jQGrid_Visor").html();
    var thead = $(".ui-jqgrid-htable").html();
    var htmlTable = "<table>" + thead + tbody + "</table>";
    var strCopy = htmlTable;
    $('[id$=hdnHtml]').val(strCopy); // fill the hidden with the table content
    $('[id$=btnExcel]').click(); // click button hidden
}

В моем случае у меня есть меню с правой кнопкой, которое запускает событие exportXls, если вы хотите, вы можете выйти с C #, не скрывая кнопку

var eventsMenu = {
            bindings: {
                'actualizar': function(rowid) {
                    //alert('Accion [Actualizar] del elemento ' + t.id);
                    jQuery('#jQGrid_Visor').setGridParam(rowid).trigger("reloadGrid");
                },
                **'exportar': function(rowid) {
                    //alert('Accion [Exportar] del elemento ' + rowid.id);
                    exportXls();**
                },
                'full': function(t) {
                    // alert('Accion [Full Screen] del elemento ' + t.id);
                    window.open("./frmBrwVisorMantencionFullScreen.aspx?cod_flota=" + $('[id$=hdnCodFlota]').val(), "Full_Screen", "scrollbars=NO,Resizable=NO,toolbar=no,location=no,directories=no,status=no,menubar=no,fullscreen=yes");
                },
                'paste': function(t) {
                    alert('Accion [Pegar] del elemento ' + t.id);
                },
                'delete': function(t) {
                    alert('Accion [Eliminar] del elemento ' + t.id);
                }
            }
        };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...