Dependent Select Box Options in jqGrid Editing Form
jqGrid allows you to create dynamic select boxes for editing forms, where the options depend on the selection made in a related select box. This is useful for scenarios like selecting a country and populating the state options accordingly.
Issue: Incorrect Option Values
However, an issue arises when editing a record with a dynamically populated state select box. The option values of the state select box start from 0 instead of the expected value of 5.
Solution: Resetting Editoptions and Manual Rebuild
To resolve this issue, the key is to understand that jqGrid uses editoptions only once at initialization. To populate the state select box correctly based on the selected country, the editoptions must be reset and the select box rebuilt manually.
Here's how the solution is implemented:
Reset Editoptions:
Data Change:
Rebuild Select Box:
Maintain State Values:
Code Snippet:
// Reset the editoptions for the state select box
var resetStatesValues = function () {
grid.setColProp('State', { editoptions: { value: states}});
};
// Build new options for the state select box based on the selected country
var changeStateSelect = function (countryId, countryElem) {
var sc = statesOfCountry[countryId];
var newOptions = ''; // If needed
for (stateId in sc) { newOptions = ''; }
grid.setColProp('State', { editoptions: { value: statesOfCountry[countryId]} });
if ($(countryElem).is('.FormElement')) {
// Form editing
$(countryElem).closest('form.FormGrid').find("select#state.FormElement").html(newOptions);
} else {
// Inline editing
var row = $(countryElem).closest('tr.jqgrow');
var rowId = row.attr('id');
$("select#" rowId "_State", row[0]).html(newOptions);
}
};
Conclusion
By resetting the editoptions, rebuilding the state select box manually, and maintaining the selected state value, you can ensure that the edit form in jqGrid displays the correct option values for dependent select boxes.
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3