Я использовал response-handsontable для добавления нескольких строк, у меня есть dropdownSource, в этом выпадающем списке я заполнял имя из списка на основе имени, как найти соответствующий Id и передать данные настроек, чтобы я мог отправитьВ запросе с таким идентификатором.
settings: {
colHeaders:['Full Name', 'Staff Id','NRIC','Passport' , 'Nationality', 'Position Code', 'Service Code', 'Select Plan'],
data: [{first_name:"", company_id:"", ic_no: "", passport_no: "", nationality: "", position_code: "", service_code: "", subscription_plan_id: ""}],
columns: [
{ data:"first_name"},
{ data: "company_id"},
{ data: "ic_no"},
{ data:"passport_no"},
{ data: "nationality"},
{ data: "position_code"},
{ data:"service_code"},
{ data: "subscription_plan_id", type: 'dropdown', source:[] },
],
minSpareRows: 0,
contextMenu: true,
rowHeaders:true,
manualColumnResize: true,
columnSorting: true,
manualRowResize: true,
manualRowMove: true,
manualColumnMove: true,
colWidths: [100, 100, 100,100, 100, 100, 100, 230],
}
В состоянии я сохраняю настройки. Из хранилища изменений я получаю ответ в виде списка, как показано на рисунке, из ответа на изображение, которое я заполняю именами, но вв запросе мне нужно заполнить соответствующий ему subscription_plan_id
_userStoreChange(type) {
if (type == 'PlansList') {
let planslist = UserStore._getAllPlans() || {};
this.setState({ planslist }, ()=>{
let plans = this.state.planslist && this.state.planslist.payload;
let sourceForPackageName = plans.map(el => el.plan_name);
let columns = this.state.settings.columns.map(function(col){
if(col.data === "subscription_plan_id"){
col.source = sourceForPackageName;
}
return col;
});
this.refs.hot.hotInstance.updateSettings({columns: columns});
});
}
}
Handsontable Component:
<HotTable root="hot" ref="hot" settings={this.state.settings} strechH="all" />
В запросе я могу передать plan_name, но мне нужно его соответствующее значение `subscription_plan_id
`