@@ -1937,6 +1937,7 @@ def on_refine_done(self):
19371937 self .initial_rows = self .rows
19381938 self .header = HeaderConfig (_name = 'header' , ** self .header ).refine_done (parent = self )
19391939 self .row = RowConfig (** self .row ).refine_done (parent = self )
1940+ self ._preprocessed_rows = None
19401941
19411942 # In bind initial_rows will be used to set these 3 (in that order)
19421943 self .sorted_rows = None
@@ -2220,7 +2221,8 @@ def on_bind(self) -> None:
22202221 bind_member (self , name = 'bulk_container' )
22212222
22222223 def get_visible_rows (self ):
2223- self .visible_rows = self .parts .page .rows
2224+ if self .visible_rows is None :
2225+ self .visible_rows = self .parts .page .rows
22242226 return self .visible_rows
22252227
22262228 def _bind_query (self ):
@@ -2280,7 +2282,6 @@ def render_actions(self):
22802282 def _prepare_auto_rowspan (self ):
22812283 auto_rowspan_columns = [column for column in values (self .columns ) if column .auto_rowspan ]
22822284 if auto_rowspan_columns :
2283- self .visible_rows = list (self .get_visible_rows ())
22842285 no_value_set = object ()
22852286 for column in auto_rowspan_columns :
22862287 if column .cell .attrs .get ('rowspan' , no_value_set ) is not no_value_set :
@@ -2412,12 +2413,13 @@ def cells_for_rows(self, paginate=True):
24122413 rows = self .get_visible_rows ()
24132414 else :
24142415 rows = self .sorted_and_filtered_rows
2415- preprocessed_rows = self .invoke_callback (self .preprocess_rows , rows = rows )
2416+ if not self ._preprocessed_rows :
2417+ self ._preprocessed_rows = list (self .invoke_callback (self .preprocess_rows , rows = rows ))
24162418
24172419 row_groups = [c for c in values (self .columns ) if c .row_group .include ]
24182420 row_group_values = {c ._name : None for c in row_groups }
24192421
2420- for i , row in enumerate (preprocessed_rows ):
2422+ for i , row in enumerate (self . _preprocessed_rows ):
24212423 row = self .invoke_callback (self .preprocess_row , row = row )
24222424 assert row is not None , 'preprocess_row must return the row'
24232425
0 commit comments