【UE源码向】DataTable搜索过滤表行的原理

UE 在 DataTable 中搜索时发生了什么

  • 内部数据:DataTableEditor 中存了一份所有表行的文本信息 AvailableRows,在表格 HandlePostChange() 中会调用 RefreshCachedDataTable() 刷新填充 AvailableRows
    img
    img

  • 如何填充:遍历所有表行,拿到 Struct 中的所有 Property,通过调用 DataTableUtils::GetPropertyValueAsText(),内部以 JsonWriter 以Json格式写入到字符串中保存到 AvailableRows
    img

  • 搜索流程:响应到 SearchBox 控件的输入后,回调到 FDataTableEditor::OnFilterTextChanged() 根据输入字符串 逐Row逐 CellData 关键字搜索,然后把 AvailableRows 中过滤后的结果存到 VisibleRows 中,最后交给CellsListView 去做UI更新
    img

posted @ 2025-10-31 10:12  yocichen  阅读(1)  评论(0)    收藏  举报