2013-04-11 4 views
0

Я определил избранный в jqgrid таблицы следующим образом:Получение поля «стоимость» jqgrid выберет

{name: 'station', index: 'station', editable: true, width: 60, 
    edittype:"select", defaultValue:"", 
    editoptions:{ 
     dataUrl: "getStationList" 
    }, 
    editrules: { required: true } 
}, 

getStationList возвращает что-то вроде:

<select> 
<option value="id1">Station1</option> 
<option value="id2">Station2</option> 
</select> 

С текущим определением, при первом отображении комбо список Station прекрасно выглядит (Station1, Station2, ...), а JSON содержит «id1», когда выбрана Station1. Но когда таблица обновляется, в списке выбора отображается «id1», а не показывается список станции.

Это ошибка или у меня отсутствует какой-либо вариант конфигурации? (возможно, последний)

Спасибо!

ответ

1

Я думаю, что у вас уже есть проблема во время заполнение сетка. Если вы хотите использовать идентификаторы вместо имен, вы должны использовать formatter: "select"дополнительно до edittype:'select' (см. the documentation). В случае, если вам придется помещать идентификаторы в сетку во время заполнения сетки данными. Я имею в виду, что входные данные для jqGrid должны содержать id1 и id2 вместо "Station1" и "Station2". Только в этом случае вы сможете использовать dataUrl, которые предоставляют <option value="id1">Station1</option>. Следующая проблема: вы должны установить editoptions.value или formatoptions.value вместо использования dataUrl: "getStationList". Поэтому использование formatter: "select" относительно сложно. Что можно сделать, так это отправить данные, такие как {"id1":"Station1", "id2":"Station2"}как часть основных данных сетки. Можно разместить {stations: {"id1":"Station1", "id2":"Station2"}} как userdata часть входа JSON (см. the documentation). Внутри beforeProcessing callback можно установить formatoptions.value на основе userdata.stations. В способе де-факто можно запросить getStationList не только при редактировании данных, но и при каждом заполнении сетки.

Я лично предпочитаю использовать не formatter: "select" и использование выбирает в виде

<select> 
    <option value="Station1">Station1</option> 
    <option value="Station2">Station2</option> 
</select> 

В пути код клиента не будет «знать» ничего о деталях реализации представления данных. Можно было бы заполнить сетку данными «Station1» и «Station2» и отправить те же данные во время редактирования сетки. Сервер с другой стороны будет получать идентификаторы по именам всякий раз, когда это необходимо. Как правило, если я создаю «подстановки» таблицу Stations с колонкой, как «Id» и «Имя» Я бы установить

CONSTRAINT UC_Stations_Name UNIQUE NONCLUSTERED (Name ASC) 

Таким образом, существует уникальный индекс в таблице, которую можно получить Id по имени. Таким образом, все операторы обновления с именем точно так же быстро, как и с Id. Я использую Id во всех внутренних операторах SQL, но отправляю только имя во внешний источник. В способе мне не нужно использовать formatter: "select".

+0

Я вижу, что это не так просто, как я думал. Я почти не нашел подсказок об этом. Anywayl Я попробую использовать метод beforeProcessing. Большое спасибо!! – rubenafo

+0

@figurebelow: Добро пожаловать! – Oleg

Смежные вопросы