pub struct DataTable<D: TableDelegate> { /* private fields */ }Expand description
A table element with support for row, column, and cell selection.
§Features
- Multiple Selection Modes: Support for row, column, and cell selection
- Cell Selection: Click to select individual cells, with keyboard navigation
- Virtual Scrolling: Efficient rendering of large datasets
- Resizable Columns: Drag column borders to resize
- Movable Columns: Drag column headers to reorder
- Fixed Columns: Pin columns to the left side
- Sortable Columns: Click column headers to sort
- Context Menus: Right-click support for rows and cells
§Cell Selection Mode
When cell selection is enabled via TableState::cell_selectable():
- Click on cells to select them
- A row header column appears on the left for selecting entire rows
(use
TableState::row_header()to hide it) - Keyboard navigation (arrow keys, Tab, Home, End, PageUp, PageDown) works at cell level
- Right-click and double-click events are supported
See TableState for more details on cell selection.
§Example
let table_state = cx.new(|cx| {
TableState::new(delegate, cx)
.cell_selectable(true)
.row_selectable(true)
});
DataTable::new(&table_state)
.stripe(true)
.bordered(true)Implementations§
Source§impl<D> DataTable<D>where
D: TableDelegate,
impl<D> DataTable<D>where
D: TableDelegate,
Sourcepub fn new(state: &Entity<TableState<D>>) -> Self
pub fn new(state: &Entity<TableState<D>>) -> Self
Create a new DataTable element with the given TableState.
Sourcepub fn stripe(self, stripe: bool) -> Self
pub fn stripe(self, stripe: bool) -> Self
Set to use stripe style of the table, default to false.
Sourcepub fn scroll_bounce(self, enabled: bool) -> Self
pub fn scroll_bounce(self, enabled: bool) -> Self
Bounce the rows at the vertical boundaries, keeping headers and scrollbars fixed. On by default on iOS, Android and macOS, off elsewhere.
Sourcepub fn bordered(self, bordered: bool) -> Self
pub fn bordered(self, bordered: bool) -> Self
Set to use border style of the table, default to true.
Sourcepub fn header_row_height(self, height: impl Into<Pixels>) -> Self
pub fn header_row_height(self, height: impl Into<Pixels>) -> Self
Set the height of each header row.
Column-group rows use the same height, so the whole header is this
height times the number of header rows. Body rows keep the height from
Size::table_row_height. When this is unset, header rows use that
same height.
Sourcepub fn fixed_cols_border(self, fixed_cols_border: bool) -> Self
pub fn fixed_cols_border(self, fixed_cols_border: bool) -> Self
Set whether to draw the border on the right edge of the fixed columns, default to true.
Turn it off when the fixed cells draw that edge themselves, so the boundary is not drawn twice.
Sourcepub fn scrollbar_visible(self, vertical: bool, horizontal: bool) -> Self
pub fn scrollbar_visible(self, vertical: bool, horizontal: bool) -> Self
Set scrollbar visibility.
Trait Implementations§
Source§impl<D> FocusableExt for DataTable<D>where
D: TableDelegate,
impl<D> FocusableExt for DataTable<D>where
D: TableDelegate,
fn focus_ring(self, enabled: bool) -> Self
fn is_focus_ring_enabled(&self) -> bool
Source§impl<D: TableDelegate> IntoElement for DataTable<D>
impl<D: TableDelegate> IntoElement for DataTable<D>
Source§type Element = ViewElement<DataTable<D>>
type Element = ViewElement<DataTable<D>>
Source§fn into_element(self) -> Self::Element
fn into_element(self) -> Self::Element
Element.Source§fn into_any_element(self) -> AnyElement
fn into_any_element(self) -> AnyElement
AnyElement.Source§impl<D> RenderOnce for DataTable<D>where
D: TableDelegate,
impl<D> RenderOnce for DataTable<D>where
D: TableDelegate,
Source§fn render(self, window: &mut Window, cx: &mut App) -> impl IntoElement
fn render(self, window: &mut Window, cx: &mut App) -> impl IntoElement
Render::render() method
which takes a mutable reference.Source§impl<D> Sizable for DataTable<D>where
D: TableDelegate,
impl<D> Sizable for DataTable<D>where
D: TableDelegate,
Auto Trait Implementations§
impl<D> !RefUnwindSafe for DataTable<D>
impl<D> !UnwindSafe for DataTable<D>
impl<D> Freeze for DataTable<D>
impl<D> Send for DataTable<D>
impl<D> Sync for DataTable<D>
impl<D> Unpin for DataTable<D>
impl<D> UnsafeUnpin for DataTable<D>
Blanket Implementations§
Source§impl<E> AnimationExt for Ewhere
E: IntoElement + 'static,
impl<E> AnimationExt for Ewhere
E: IntoElement + 'static,
Source§fn with_animation(
self,
id: impl Into<ElementId>,
animation: Animation,
animator: impl Fn(Self, f32) -> Self + 'static,
) -> AnimationElement<Self>where
Self: Sized,
fn with_animation(
self,
id: impl Into<ElementId>,
animation: Animation,
animator: impl Fn(Self, f32) -> Self + 'static,
) -> AnimationElement<Self>where
Self: Sized,
Source§fn with_animations(
self,
id: impl Into<ElementId>,
animations: Vec<Animation>,
animator: impl Fn(Self, usize, f32) -> Self + 'static,
) -> AnimationElement<Self>where
Self: Sized,
fn with_animations(
self,
id: impl Into<ElementId>,
animations: Vec<Animation>,
animator: impl Fn(Self, usize, f32) -> Self + 'static,
) -> AnimationElement<Self>where
Self: Sized,
Source§fn with_spring<T>(
self,
id: impl Into<ElementId>,
animation: SpringAnimation<T>,
animator: impl FnOnce(Self, <T as SpringTarget>::Output) -> Self + 'static,
) -> SpringAnimationElement<Self>
fn with_spring<T>( self, id: impl Into<ElementId>, animation: SpringAnimation<T>, animator: impl FnOnce(Self, <T as SpringTarget>::Output) -> Self + 'static, ) -> SpringAnimationElement<Self>
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FluentBuilder for Twhere
T: IntoElement,
impl<T> FluentBuilder for Twhere
T: IntoElement,
Source§fn map<U>(self, f: impl FnOnce(Self) -> U) -> Uwhere
Self: Sized,
fn map<U>(self, f: impl FnOnce(Self) -> U) -> Uwhere
Self: Sized,
Source§fn when(self, condition: bool, then: impl FnOnce(Self) -> Self) -> Selfwhere
Self: Sized,
fn when(self, condition: bool, then: impl FnOnce(Self) -> Self) -> Selfwhere
Self: Sized,
Source§fn when_else(
self,
condition: bool,
then: impl FnOnce(Self) -> Self,
else_fn: impl FnOnce(Self) -> Self,
) -> Selfwhere
Self: Sized,
fn when_else(
self,
condition: bool,
then: impl FnOnce(Self) -> Self,
else_fn: impl FnOnce(Self) -> Self,
) -> Selfwhere
Self: Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more