jqgrid - неправильно установлено начальное значение фильтра при использовании поисков с dataUrl
Я думаю, что это ошибка в jqGrid (я использую версию 4.4.0). В моем colModel это работает нормально:
stype:'select', searchoptions: {sopt: ['eq','ne'], value:"Red:Red;Green:Green;Blue:Blue"}
но это не
stype:'select', searchoptions: {sopt: ['eq','ne'], dataUrl:'rest/selectcolors'};
где dataUrl возвращается
<option value='Red'>Red</option><option value='Green'>Green</option><option value='Blue'>Blue</option></select>
Цвета хорошо отображаются в комбинированном списке со значением "Красный" в качестве значения по умолчанию, но фильтр неправильно инициализирован, если пользователь не изменит фильтр комбинированного списка, выбрав "Зеленый" или "Синий" (а затем, возможно, вернется и выберет "Красный").). Если пользователь пытается отфильтровать, не изменив сначала значение поля со списком, совпадений не найдено. Эта проблема возникает при первоначальном использовании диалогового окна фильтра и после сброса диалогового окна фильтра, поэтому это очень запутывает пользователя.
Кто-нибудь знает об обходном пути / исправить это?
1 ответ
На первый взгляд ваш возвращенный dataurl не имеет
<select>
и это может быть ошибкой
Тем не менее, у меня есть эта проблема тоже! но я не нахожу никакого решения с помощью поиска в Интернете. я временно решаю эту проблему с помощью трюка, я добавляю одну опцию со значением = -1 и текст "Пожалуйста, выберите", затем в случае изменения я удаляю эту опцию
searchoptions: {sopt: ['eq', 'ne'], dataUrl:'yoururl',
dataEvents:[{ type: 'change',
fn: function(e)
{
$('td.data').find('option[value=-1]').remove();
}
}]},
но проблема все еще существует.. если пользователь не меняет комбобокс и выбирает опцию "Пожалуйста, выберите", он увидит ошибку.
я использую следующий код в моем php url
echo "<select>";
echo "<option value='-1'>please select</option>";
while($row = pg_fetch_assoc($res))
{
echo "<option value='".$row['cid']."' >".$row['cname']."</option>";
}
echo"</select>";
Вы можете использовать такой стиль и удалить его после изменения элемента select
стиль = "стиль шрифта: курсив; Цвет: серый; width:100px' data-native-menu='false'