Javascript 如何在ag网格中从valueFormatter调用异步函数
我有一个ag网格表,其中有一列带有值格式化程序:Javascript 如何在ag网格中从valueFormatter调用异步函数,javascript,async-await,ag-grid,Javascript,Async Await,Ag Grid,我有一个ag网格表,其中有一列带有值格式化程序: { headerName: "My column", valueFormatter: getFormattedIndexValue, ... } 从getFormattedIndexValue我尝试调用异步函数: async function getFormattedIndexValue (params) { if (!params.value) return; return await getDecod
{
headerName: "My column",
valueFormatter: getFormattedIndexValue,
...
}
从getFormattedIndexValue
我尝试调用异步函数:
async function getFormattedIndexValue (params) {
if (!params.value) return;
return await getDecodedValue(table, params.colDef.field, params.value);
}
这是异步函数的代码,我尝试调用:
async function getDecodedValue(table, field, value) {
const query = `function=decode&table=${table}&field=${field}&value=${value}`;
const response = await fetch('routines.php', { method: 'post', body: query, headers: {"Content-Type": "application/x-www-form-urlencoded"}});
return response.text();
}
但这样valueFormatter就不会返回正确的值,从而导致
[对象承诺]
。有没有一种方法可以从valueFormatter调用异步函数并获得正确的结果valueFormatter
不适合它,但是,您可以创建cellRenderer
,这样您就能够处理内部所需的逻辑
但正如我所理解的,您希望有某种引用(数据库上的键到值、id(作为键)和视图网格上的值(作为显示值)——对吗
如果是,则应使用(valueFormatter
和valueParser
)但不使用异步调用,
您需要在grid init进程上拥有键值对(字典)
以下是我的例子:
在ag grid init进程中,我正在为config.ComboData
valueFormatter
和params.value
-在ag网格渲染值时使用
valueParser
和params.newValue
-更新单元格值时
这里是looupValue
和lookupKey
函数和
valueFormatter
不适合它,但是您可以创建cellRenderer
,这样您就可以在内部处理所需的逻辑
但正如我所理解的,您希望有某种引用(数据库上的键到值、id(作为键)和视图网格上的值(作为显示值)——对吗
如果是,则应使用(valueFormatter
和valueParser
)但不使用异步调用,
您需要在grid init进程上拥有键值对(字典)
以下是我的例子:
在ag grid init进程中,我正在为config.ComboData
valueFormatter
和params.value
-在ag网格渲染值时使用
valueParser
和params.newValue
-更新单元格值时
这里是looupValue
和lookupKey
函数和
我明白了,现在我使用映射,使用PHP从DB创建它们,但是我的表是动态创建的,非常复杂,这些映射在项目中成为垃圾。此外,如果我想从中加入另一个表,我需要打印额外的映射。单元渲染器不会有用,因为过滤器中的ID是以这种方式渲染的,而不是名称(即,1=>'BILLA',2=>'SPAR',3=>'L'etoile',…,对于单元渲染器,1,2,3在过滤器中,但未清除存储names@PavelSumarokov你在重复问题,试着一个接一个地解决它们,并在每篇文章中创建一个问题,因为在这里你混合了一些问题,我无法确定你想解决哪一个问题。我明白了,现在我使用mapp但是我的表是动态创建的,而且非常复杂,这些映射会在项目中成为垃圾。此外,如果我想从中加入另一个表,我需要打印额外的映射。单元格渲染器将不会有用,因为过滤器中的ID是以这种方式呈现的,而不是名称(即,1=>'BILLA',2=>'SPAR',3=>'L'etoile',…,对于单元渲染器,1,2,3在过滤器中,但未清除存储names@PavelSumarokov你在重复问题,试着一个接一个地解决它们,并在每篇文章中创建一个问题,因为在这里你混合了几个问题,我无法确定你要解决的是哪一个。
valueFormatter = (params) => {
return this.lookupValue(config.ComboData['columnNameHere'], params.value);
};
valueParser = (params) => {
return this.lookupKey(config.ComboData['columnNameHere'], params.newValue);
}
lookupValue(mappings, key:string) {
return mappings[key];
}
lookupKey(mappings, name) {
for (var key in mappings) {
if (mappings.hasOwnProperty(key)) {
if (name === mappings[key]) {
return key;
}
}
}
}