根据文档:快速过滤器,快速过滤器适用于clientSide行模型。
我们正在为ag-gridserverSide使用行模型,并且我们需要对客户端(网格的缓存块中)的数据使用快速过滤器。
我虽然使用过滤器管道[rowData]="myRowData",但对于这个行模型,我没有从 中获取任何数据myRowData。
例如,如果您查看这个 plunk服务器端行模型 - 快速过滤器,我已
[rowData]="rowData"在标记中进行分配并将其初始化为[]。从服务器加载初始块后,我假设应该可以使用它访问缓存块数据,以便使用角度管道,我将能够在客户端过滤掉数据(模仿行模型的快速过滤器
serverSide)。就像我们以前在angularjs[rowData]="rowData | filter: filterText"中所做的那样
但我担心缓存数据无法通过rowData.
我们如何以某种方式将快速过滤器与具有serverSide行模型的 ag-grid 一起使用?
我有一个 ag-Grid 主/详细网格设置。因此,当主网格行展开时,它会加载详细网格。
请参阅简单示例: https://www.ag-grid.com/javascript-grid-master-detail/#example-simple-master-detail
这是基于详细网格的数据已经在主网格上使用的原始 json 数据中获取的基础上进行的。
我想获取id主网格所选行的 并进行第二次 HTTP 服务调用以获取详细网格的 json 数据。
简单的示例只是将 json 数据发送到 successCallback,如下所示:
getDetailRowData: function(params) {
params.successCallback(params.data.callRecords);
}
Run Code Online (Sandbox Code Playgroud)
我尝试将此方法更改为:
getDetailRowData: function(params) {
this.http
.get(
"https://gist.githubusercontent.com/adrianwright109/37a5e37ba2382b26f42b9d12a8593878/raw/60d2ffed511262a6a2e7e54e01bffd28c3701c5e/ClientProfiles.json"
)
.subscribe(data => {
params.successCallback(data);
});
// params.successCallback(params.data.callRecords);
}
Run Code Online (Sandbox Code Playgroud)
使用此代码我收到以下错误:
错误类型错误:无法读取未定义的属性“http”
错误 错误:ag-Grid:当网格位于绘制行的中间时,无法让网格绘制行。当网格处于渲染阶段时,您的代码可能调用了网格 API 方法。为了克服这个问题,请将 API 调用设置为超时,例如,调用 setTimeout(function(){api.refreshView(),0}),而不是 api.refreshView()。要查看代码的哪一部分导致刷新,请检查此堆栈跟踪。
getDetailRowData: function(params) {
setTimeout(function() {
this.http
.get(
"https://gist.githubusercontent.com/adrianwright109/37a5e37ba2382b26f42b9d12a8593878/raw/60d2ffed511262a6a2e7e54e01bffd28c3701c5e/ClientProfiles.json"
)
.subscribe(data => {
params.successCallback(data);
});
}, 500);
// params.successCallback(params.data.callRecords);
}
Run Code Online (Sandbox Code Playgroud)
使用此代码我收到以下错误:
错误类型错误:无法读取未定义的属性“get”
我有一个笨蛋:
https://next.plnkr.co/plunk/IS5a3jKyDJJSSdh0
有没有人通过 Web API 服务调用实现延迟加载详细网格数据?
尝试使用Ivy在Angular 8应用程序中导入ag网格模块时遇到以下错误。
ERROR in There is no format with import statements in 'path_to_node_modules/node_modules/ag-grid-angular' entry-point.
如果我禁用常春藤,错误消失。有谁知道解决方法?
套件版本:
"ag-grid-angular": "^21.0.0",
"ag-grid-community": "^21.0.0",
"ag-grid-enterprise": "^21.0.0",
Run Code Online (Sandbox Code Playgroud) 这是我在文档和在线讨论中看到的经典示例,用于向单元格弹出列表提供“动态”项目列表。但这并不是真正的动态。所有的值和关系都是提前知道的,并被硬编码到源代码中。
cellEditor : 'agSelectCellEditor';
cellEditorParams: function(params) {
var selectedCountry = params.data.country;
if (selectedCountry==='Ireland') {
return {
values: ['Dublin','Cork','Galway']
};
} else {
return {
values: ['New York','Los Angeles','Chicago','Houston']
};
}
}
Run Code Online (Sandbox Code Playgroud)
如果我正在经营一家不断扩张的业务,并且每月将新城市添加到我在不同国家/地区保持企业业务的列表中,该怎么办?我不能每次获得新客户时都给程序员打电话。我需要一种在运行时动态提供此列表的方法,其中包含从应用程序数据库中获取的一组值 - 提前未知。
这可以做到吗?
我在这里记录了我不成功的努力:
如何将 ag-Grid 下拉列表绑定到其值在运行时才知道的字符串数组?
如果您能在我的其他询问中在这里或那里帮助我回复,我将不胜感激!
在版本 22 中,Ag-grid 从根本上改变了他们的代码,因此现在将其部署在模块中,主要来自两个新包 @ag-grid-community/all-modules 或 @ag-grid-enterprise/all-modules。他们网站上的文档完全不清楚如何成功迁移到新版本 22。特别是对于 Angular 应用程序。即使代码示例也不起作用(它们引用了未知模块@ag-grid-community/angular)。
有谁知道如何在 Angular 8 中将 Ag-Grid 从版本 21 迁移到版本 22?也欢迎任何有关企业版操作的信息。
我使用的是Ag-grid v23.1.1
我需要显示 1 分钟的工具提示。
Ag grid 不支持这种情况但在版本 22 的早期我已经使用了 next lifehack
params.api.context.beanWrappers.tooltipManager.beanInstance.MOUSEOVER_SHOW_TOOLTIP_TIMEOUT = 0;
params.api.context.beanWrappers.tooltipManager.beanInstance.DEFAULT_HIDE_TOOLTIP_TIMEOUT = 60000;
params.api.context.beanWrappers.tooltipManager.beanInstance.MOUSEOUT_HIDE_TOOLTIP_TIMEOUT = 3000;
Run Code Online (Sandbox Code Playgroud)
但在当前版本中(23)tooltipManager已被删除。
我们有TooltipFeature
https://github.com/ag-grid/ag-grid/blob/master/community-modules/core/typings/widgets/tooltipFeature.d.ts
在新版本中名称已更改为:
DEFAULT_HIDE_TOOLTIP_TIMEOUT;
SHOW_QUICK_TOOLTIP_DIFF;
FADE_OUT_TOOLTIP_TIMEOUT;
Run Code Online (Sandbox Code Playgroud)
同样的方法无效
您知道当前版本中有哪些生活窍门吗?
现在我有一列,例如名称是“age”
{headerName: 'age', field: 'age', filter: 'agNumberColumnFilter', aggFunc: 'sum'}
Run Code Online (Sandbox Code Playgroud)
我在上面加了一个sum aggFunc,所以头名称的结果就变成了“sum(age)”
但是,我仍然想显示“年龄”,我该如何实现呢?
非常感谢
我使用ag-grid创建了一个可编辑的网格,我需要突出显示已更改的单元格。我添加了以下代码:
(cellValueChanged)="onDemandsCellValueChanged($event)"
Run Code Online (Sandbox Code Playgroud)
和方法:
onDemandsCellValueChanged(params): void {
if (params.oldValue === params.newValue) {
return;
}
params.data.modified = true; // add modified property so it can be filtered on save
const column = params.column.colDef.field;
params.column.colDef.cellStyle = { 'background-color': '#e1f9e8' }; // highlight modified cells
params.api.refreshCells({
force: true,
columns: [column],
rowNodes: [params.node],
});
}
Run Code Online (Sandbox Code Playgroud)
该单元格突出显示,但是当我上下滚动时,该列中的所有单元格都突出显示。
您可以检查stackblitz上的行为。
此外,如果您有更好的方法来做到这一点,我愿意接受新的解决方案。
我在 Ag-grid (Angular) 中遇到了奇怪的行为。当我使用 serverSide 选项并且服务器没有返回数据时,网格将显示 cacheBlockSize 中提到的所有行的加载图标。我尝试了尽可能多的选项来隐藏这些空的加载行,但没有任何结果。
我尝试在官方示例页面中复制相同的内容。幸运的是,我可以复制类似的行为。请参阅官方示例页面的编辑版本,其中我从假服务器调用中传递了一个空数组:
https://plnkr.co/edit/Egw9ToJmNE7Hl6Z6
onGridReady(params) {
this.gridApi = params.api;
this.gridColumnApi = params.columnApi;
this.http
.get('https://www.ag-grid.com/example-assets/olympic-winners.json')
.subscribe((data) => {
let idSequence = 0;
data.forEach((item) => {
item.id = idSequence++;
});
const server = new FakeServer(data);
const datasource = new ServerSideDatasource(server);
params.api.setServerSideDatasource(datasource);
});
}
}
function ServerSideDatasource(server) {
return {
getRows: (params) => {
setTimeout(() => {
const response = server.getResponse(params.request);
if (response.success) {
params.successCallback(response.rows, response.lastRow);
} else {
params.failCallback();
}
}, 2000);
},
};
}
function …Run Code Online (Sandbox Code Playgroud) ag-grid-angular ×10
ag-grid ×8
angular ×4
javascript ×3
angular-ivy ×1
grid ×1
migration ×1
reactjs ×1