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 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 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: TableDelegate> IntoElement for DataTable<D>
impl<D: TableDelegate> IntoElement for DataTable<D>
Source§type Element = ViewElement<DataTable<D>>
type Element = ViewElement<DataTable<D>>
The specific type of element into which the implementing type is converted.
Useful for converting other types into elements automatically, like Strings
Source§fn into_element(self) -> Self::Element
fn into_element(self) -> Self::Element
Convert self into a type that implements
Element.Source§fn into_any_element(self) -> AnyElement
fn into_any_element(self) -> AnyElement
Convert self into a dynamically-typed
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 this component into an element tree. Note that this method
takes ownership of self, as compared to
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,
Render this component or element with an animation
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,
Render this component or element with a chain of animations
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>
Renders this component or element at the value produced by a spring. Read more
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
Mutably borrows from an owned value. Read more
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,
Imperatively modify self with the given closure.
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,
Conditionally modify self with the given closure.
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,
Conditionally modify self with the given closure.
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> ⓘ
Converts
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> ⓘ
Converts
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