Существует ли способ использовать Thickbox с динамическим контентом?

Чтобы ответить на вопрос. Это похоже на ошибку в кендо. Установка для pageSize значения 0 (ярлык для «всего») после того, как источник данных уже был привязан, всегда приведет к тому, что у сетки будут проблемы с любыми пользовательскими фильтрами, объявленными внутри шаблона панели инструментов.

Если быть точным, если у вас есть собственный фильтр, определенный внутри шаблона панели инструментов:

@(Html.Kendo().TextBox().Name("Filter").Deferred())

Вы подключаете его через определение источника данных в сетке, например:

.DataSource(ds =>
    ds.Ajax()
        .PageSize(defaultPageSize)
        .Read(a => a.Action(actionName, controllerName, new
        {
            param = Model.param
        }).Data("getFilterParameters")))
[1110 ] в javaScript, извлекающем параметры, например:

getFilterParameters: function () {
    return this.filterParameters;
},

, заполняющие их методом:

filter: function () {
    var grid = $("#Grid").data("kendoGrid");

    this.filterParameters = {
        param: $("#Filter").val()
    };

    grid.dataSource.page(1);
}

, к которому подключен простой прослушиватель событий:

$("#Filter").on("keyup", filter);
[1113 ] Затем после программного изменения pageSize на 0 / "all" с помощью:

$("#Grid").data("kendoGrid").dataSource.pageSize(0);

Фильтр начнет всегда возвращать NaN в качестве текущей страницы / пропуска объекта фильтра, переданного на сервер с параметрами запроса (хотя сетка будет отображать числа правильно). Это вызовет исключение «строка не в правильном формате» внутри кода платформы на конечной точке всякий раз, когда вы пытаетесь использовать фильтр. Решение вышеупомянутого состоит в том, чтобы немного изменить метод getFilterParameters:

    getFilterParameters: function (e) {
        // Workaround for Kendo NaN pager values if pageSize is set to All 
        if (isNaN(e.page)) e.page = 1;
        if (isNaN(e.skip)) e.skip = 0;
        //
        return this.filterParameters;
    }

Это повторно инициализирует страницу и пропускает значения перед отправкой запроса фильтра. Эти значения в любом случае будут повторно заполнены в конечной точке правильными значениями. Не я это заметил, а еще один разработчик, работающий над проектом, кредит ей

.
6
задан Kevin Pang 3 November 2008 в 02:28
поделиться

4 ответа

Просто обработайте onclick своей кнопки для выполнения функции, которая звонит tb_show(), передача значения текстового поля. Что-то как

... onclick = "doSearch()" ...

function doSearch()
{
    tb_show(caption, 'Search.aspx?KeepThis=true&q=\"' +
            $('input#tb').val() +
            '\"&TB_iframe=true&height=500&width=700');
}
10
ответ дан 9 December 2019 в 20:50
поделиться

Вот идея. Я не думаю, что это очень симпатично, но должно работать:

$('input#tb').blur(function(){ 
  var url = $('input.thickbox').attr('alt');
  var tbVal = $(this).val();

  // add the textbox value into the query string here
  // url = ..

  $('input.thickbox').attr('alt', url);

});

В основном Вы обновляете тег высокого звука кнопки каждый раз, когда текстовое поле теряет фокус. Вместо этого Вы могли также слушать нажатия клавиш и обновление после всех.

До updateing строка запроса, я позволю Вам выяснить лучший способ. Я вижу помещение заполнителя там как: &TB=TB_PLACEHOLDER. Затем можно просто сделать строковую замену.

0
ответ дан 9 December 2019 в 20:50
поделиться

В коде - позади Вас мог также просто добавить тег высокого звука progammatically,

button1.Attributes.Add("alt", "Search.aspx?KeepThis=true&TB_iframe=true&height=500&width=700");
0
ответ дан 9 December 2019 в 20:50
поделиться

Если вы читаете руководство в разделе содержимого iframe, оно сообщает вам, что ваши параметры должны быть перед параметром TB_iframe. Все после этого снимается.

2
ответ дан 9 December 2019 в 20:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: