跳至主要内容
产品详细信息以英文显示。翻译即将推出。
Sticky Header and Column in List View — A build-to-order Odoo module that keeps list-view column headers and chosen leading c — 1/1示意预览

A build-to-order Odoo module that keeps list-view column headers and chosen leading columns pinned in place while users scroll wide, long records.

ECOSIRE scopes, builds, installs, and supports it for your Odoo 17, 18, or 19 database.

什么是 Sticky Header and Column in List View?

A build-to-order Odoo module that keeps list-view column headers and chosen leading columns pinned in place while users scroll wide, long records. ECOSIRE scopes, builds, installs, and supports it for your Odoo 17, 18, or 19 database. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

核心功能

OWL list renderer/controller patch compatible with Odoo 17.0, 18.0, and 19.0 web clients
CSS `position: sticky` header row with correct `z-index` stacking above scrolling body rows
Configurable number of frozen leading columns (identifier/reference fields) with horizontal pinning
Live-measured column widths so sticky offsets track optional fields, grouping, and editable inputs
Correct interaction with the selection checkbox column and row-action button column
Group-header rows (grouped list views) remain visually consistent with the frozen header
Editable-list support — inline create/edit inputs stay aligned under their pinned headers
Handles embedded `one2many`/`x2many` sub-lists inside form views without breaking the form layout
Per-view allowlist so stickiness applies only to the high-volume lists you nominate
Optional settings model with `ir.model.access.csv` and record rules to gate who changes behavior
Registered via `__manifest__.py` asset bundles (`web.assets_backend`) — no core files overwritten
Graceful fallback on narrow viewports and responsive breakpoints so mobile lists stay usable
No impact on the JSON-RPC/XML-RPC data layer — presentation-only, so exports and reports are unaffected
Namespaced CSS and JS to avoid clashes with themes and other backend UI modules

按需定制,全程代劳

无需自行搭建——由 ECOSIRE 构建、安装并提供支持的可用应用。

  1. 1

    您下单

    以一次性构建价格开始。我们在启动时与您共同确定范围。

  2. 2

    我们构建与安装

    ECOSIRE 在您的 Odoo 上构建、配置并安装。

  3. 3

    上线 + 支持

    约一个工作周内上线,并包含两周上线支持。我们交付的代码中的缺陷免费修复。

技术规格

Odoo 兼容性
Odoo 17, Odoo 18, Odoo 19
版本
企业版和社区版
许可证
许可证需要确认
Python 要求
Python 3.10+
数据库
PostgreSQL 12+

关于此产品

Teams that run wide Odoo list views — sales order lines, stock moves, journal items, BOM components, timesheet grids — lose their bearings the moment they scroll. Odoo's native web list renderer keeps the column header row and the leading identifier columns (name, reference, partner) in the normal document flow, so once you scroll down a few hundred rows or sideways across twenty fields, the header disappears off the top and the record you are reading is no longer aligned to any label. People end up scrolling back up to check which column is which, mis-key values into the wrong field, and slow to a crawl on exactly the high-volume screens where speed matters most. Odoo core has no per-view sticky-header or frozen-column setting, and the behavior varies subtly between Community and Enterprise list widgets, so there is no configuration switch that solves this out of the box.

This is what we build to order: a focused technical module that makes the list-view header row and a configurable number of leading columns remain fixed while the body scrolls, both vertically and horizontally. Technically it is a client-side extension of the list-view renderer — we patch the OWL list controller/renderer (Odoo 17/18/19 all ship the OWL web client) and layer CSS position: sticky with correct z-index stacking and computed offsets so the frozen header and columns never overlap group headers, optional-column dropdowns, the selection checkbox, or the row-action buttons. Because column widths in Odoo are computed at render time and change with optional fields, editable-mode inputs, and grouping, we bind the sticky offsets to the live measured widths rather than hard-coding them, and we handle editable lists (inline create/edit), grouped lists, and the x2many one2many sub-lists embedded in form views. Behavior is exposed through a small configuration surface — how many columns to freeze, which views it applies to — carried in the __manifest__.py asset bundles and, where you want per-view control, a lightweight settings model with ir.model.access.csv entries so only intended roles can change it.

Delivery is build-to-order, not an instant download. After a short scoping call we confirm exactly which list views must be sticky (all lists globally, or a named allowlist), how many leading columns freeze on each, how it should behave on grouped and editable lists, and your target Odoo series and edition. We build against your version, test on a staging copy of your database — including your custom modules that also touch list views, since renderer patches can collide — run UAT with your team, and hand over installable source, a git repository, and documentation. Typical delivery is one working week from confirmed scope, faster for a single clean database and longer where multiple custom list widgets or a data-heavy migration are in play. Pricing starts from $999 (indicative, single-company base scope); wider view coverage, multi-company or multi-edition targets, and reconciling conflicts with existing custom list-view extensions increase the quoted scope.

你得到什么

  • Installable source code for your Odoo version (17.0, 18.0, or 19.0) as a clean addon
  • Installation and configuration on your environment, plus asset-bundle wiring
  • Technical documentation: architecture, patched components, and configuration reference
  • End-user guide plus a live training session for your admins and power users
  • UAT on a staging copy of your database with a documented rollback plan
  • Post-go-live support window for defect fixes and behavioral adjustments
  • Git repository handover with full commit history and tagged release
  • Compatibility notes covering Community vs Enterprise list-widget differences

这是给谁的

Operations & Warehouse Teams

Users who live in long stock-move, picking, and inventory-adjustment lists and need the header pinned so they never mis-read a quantity or location column while scrolling hundreds of rows.

Finance & Accounting Users

Accountants working wide journal-item and reconciliation lists who need the account, label, and reference columns frozen on the left while they scroll across debit, credit, tax, and analytic fields.

Odoo Administrators & IT Managers

The people responsible for the database who want a maintainable, version-matched module with clean asset registration and access control — not a fragile core patch that breaks on the next upgrade.

Sales & Data-Entry Power Users

Staff processing large order lines and product lists in editable views who need headers and key columns to stay in place so inline editing lands in the correct field every time.

Sticky Header and Column in List View 如何比较

标准伊科西尔定制建造竞争对手Odoo 原生
Odoo version & edition fitBuilt and tested against your exact 17/18/19 and Community or Enterprise editionDepends entirely on your developer's coverage and testingAdvertises version support but rarely tuned to your edition's list widgetNo sticky header or frozen-column capability at all
Which lists are affectedGlobal or a named per-view allowlist you chooseWhatever you specify, if the developer builds it inUsually all-or-nothing with limited targetingNot applicable — feature absent
Grouped & editable listsExplicitly handled with aligned group headers and inline inputsOften missed on the first pass, needs iterationCommon failure point — headers drift in grouped or edit modeNo stickiness in any mode
Conflict handlingReconciled against your custom modules during staged UATYou own the conflict discovery yourselfGeneric build unaware of your customizationsNo conflicts, but no feature either
Upgrade pathCompatibility update available as a scoped follow-onYou maintain and re-test it every upgradeWait for the vendor to release, if they doNothing to maintain
Support & accountabilityNamed team, post-go-live support window, git handoverOnly as good as your internal or contract developerTicket queue with variable responseNone — it is core behavior
Delivery modelBuild-to-order, one working week from confirmed scopeOpen-ended, sized by your backlogInstant download but unproven in your databaseImmediate, but the gap remains
Cost basisFrom $999 indicative, fixed quote after scopingDeveloper day-rate, typically higher for equivalent robustnessLow sticker price, hidden cost when it breaksFree — and unsolved

关于Sticky Header and Column in List View的常见问题

How long does delivery take?

This is a build-to-order module, not an existing download. Typical delivery is one working week from the point your scope is confirmed on our scoping call. A single clean database targeting one Odoo version is faster; wider view coverage, multiple editions, or conflicts with existing custom list-view code extend the timeline. We confirm the date in writing once scope is locked.

How does pricing and scoping work?

Pricing starts from an indicative $999 for a single-company base scope. That figure is a starting point, not a fixed quote. After a short scoping call we confirm which views need stickiness, how many columns freeze, your Odoo version and edition, and any custom-module conflicts — then we send a fixed written quote before any build begins.

Which Odoo versions and editions are supported?

We build for Odoo 17.0, 18.0, and 19.0, on both Community and Enterprise. All three ship the OWL web client that our renderer patch targets. Because the list widget differs slightly between editions, we build and test against your specific version and edition rather than shipping a one-size assumption.

What about support and future Odoo upgrades?

Every build includes a post-go-live support window for defect fixes and behavioral tweaks. Renderer patches are the kind of code most affected by Odoo version upgrades, so when you move to a new major series we provide a compatibility update as a scoped follow-on engagement — quoted separately, but with your existing code as the starting point.

Will this conflict with our other custom modules or themes?

It can, which is exactly why we test on a staging copy of your real database including your custom modules before go-live. Any module or backend theme that also extends the list renderer is a potential collision point. We identify and reconcile those during UAT, and namespace our CSS and JS to minimize clashes. Reconciling significant existing customizations is a scope driver we call out in the quote.

Does this change our data or reports in any way?

No. This is a presentation-only change to how list views render in the browser. It does not touch your models, the ORM, stored data, exports, QWeb reports, or the XML-RPC/JSON-RPC API. Removing the module simply returns list views to Odoo's default scroll behavior with no data effect.

Can we choose which lists get sticky headers rather than all of them?

Yes. We can apply stickiness globally or to a named allowlist of specific views — for example only journal items, stock moves, and sales order lines. Per-view control can be exposed through a small settings model gated by `ir.model.access.csv` so only intended roles can adjust it. You tell us the target lists during scoping.

申请报价

Sticky Header and Column in List View

A build-to-order Odoo module that keeps list-view column headers and chosen leading columns pinned in place while users scroll wide, long records. ECOSIRE scopes, builds, installs, and supports it for your Odoo 17, 18, or 19 database.

  • OWL list renderer/controller patch compatible with Odoo 17.0, 18.0, and 19.0 web clients
  • CSS `position: sticky` header row with correct `z-index` stacking above scrolling body rows
  • Configurable number of frozen leading columns (identifier/reference fields) with horizontal pinning
  • Live-measured column widths so sticky offsets track optional fields, grouping, and editable inputs

申请报价

告诉我们您对 Sticky Header and Column in List View 的需求,我们将发送价格、许可选项和量身定制的方案,通常在一个工作日内。

现在无需付款。此操作会向我们的团队发送报价请求——我们会通过邮件跟进价格和后续步骤。