Визуализация представления на бэкенде и выполнение сценариев на стороне клиента - PullRequest
0 голосов
/ 02 марта 2011

Так что я экспортирую в Excel.Я делаю это так: я отображаю представления на бэкэнде, а затем записываю файл excel, используя строку HTML, сгенерированную представлением.Проблема в том, что это одно представление, которое я хочу сгенерировать, это просто пустые таблицы / столбцы, пока не будет выполнен код на стороне клиента.Он отображается, но ни один из Jquery не выполняется, поэтому при экспорте ничего не заполняется, и я получаю пустой экспорт.Вот вид:

    <table id="exposureTableBTS">
        <tr>
            <td id="headerBTS" />
        </tr>
        <tr>
            <td id="tableBTS" />
            <td id="graphBTS" />
        </tr>
    </table>

<script>
    $(document).ready(function () {

        $("#exposureTableBTS").bubble({ width: 400, title: 'Exposure:', backgroundColor: '#ffffff'  });

        $.ajax({
                type: "POST",
                url: "/Extranet/mvc/Indications.cfc/GetExposure ",
                dataType: "json",
                data: GetJSONForID(),
                success: function(data) {
                      CreateTableFromPoints(data.expsosure);
                }
            });


    function CreateTableFromPoints(data)
    {
        $("#tableBTS").html(CreateExposureBodyTable(data));
        $("#headerBTS").html(CreateExposureHeaderTable(data));
    }

    function CreateExposureGraph() {
             $.ajax({
                url: "/Extranet/mvc/Indications.cfc/ExposureGraph",
                data: GetJSONForID(),
                error:function(x,e){
                    if(x.status==0){
                        alert('You are offline!!\n Please Check Your Network.');
                    }else if(x.status==404){
                        alert('Requested URL not found.');
                    }else if(x.status==500){
                        alert('Internel Server Error.');
                    }else if(e=='parsererror'){
                        alert('Error.\nParsing JSON Request failed.');
                    }else if(e=='timeout'){
                        alert('Request Time out.');
                    }else {
                        alert('Unknow Error.\n'+x.responseText);
                    }
                },
                success:function(data)
                {
                    $("#graphBTS").html(data);
                }
            });
        }

});
</script>

Вот мой код бэкенда:

protected string RenderViewToString()
        {
            using (var writer = new StringWriter())
            {
                var view = new WebFormView(_viewPath);
                var vdd = new ViewDataDictionary<Model>(_model);
                var viewCxt = new ViewContext(_context, view, vdd, new TempDataDictionary(), writer);
                viewCxt.View.Render(viewCxt, writer);
                return writer.ToString();
            }
        }

Для страниц, которые отображаются без использования Javascript для рендеринга или обновления чего-либо, это работает нормально.Но как мне заставить эту страницу отображаться в строку ПОСЛЕ выполнения Javascript?

Спасибо!

1 Ответ

0 голосов
/ 02 марта 2011
$(document).ready() {
    $("body").hide();
})

А потом ...

function CreateExposureGraph() {
    $.ajax({
        ...
        complete: function() {
            $("body").show();
        }
    });

}

Просто идея.

...