@@ -8897,6 +8897,53 @@ public async Task OnTableColumnClientStatusChanged_ResizeColumn_Ok()
88978897 Assert . NotNull ( clientState ) ;
88988898 }
88998899
8900+ [ Fact ]
8901+ public async Task ClearTableColumnClientStatus_Ok ( )
8902+ {
8903+ var state = new TableColumnClientStatus ( ) ;
8904+ state . TableWidth = 220 ;
8905+ state . Columns . Add ( new TableColumnState ( ) { Name = nameof ( Foo . Name ) , Visible = true , Width = 100 } ) ;
8906+ state . Columns . Add ( new TableColumnState ( ) { Name = nameof ( Foo . Address ) , Visible = true , Width = 120 } ) ;
8907+
8908+ Context . JSInterop . Setup < TableColumnClientStatus > ( "getColumnStates" , "test_clear" ) . SetResult ( state ) ;
8909+ var invoker = Context . JSInterop . SetupVoid ( "clearColumnStates" , "test_clear" ) ;
8910+ invoker . SetVoidResult ( ) ;
8911+
8912+ var localizer = Context . Services . GetRequiredService < IStringLocalizer < Foo > > ( ) ;
8913+ var cut = Context . Render < BootstrapBlazorRoot > ( pb =>
8914+ {
8915+ pb . AddChildContent < Table < Foo > > ( pb =>
8916+ {
8917+ pb . Add ( a => a . ClientTableName , "test_clear" ) ;
8918+ pb . Add ( a => a . RenderMode , TableRenderMode . Table ) ;
8919+ pb . Add ( a => a . AllowResizing , true ) ;
8920+ pb . Add ( a => a . OnQueryAsync , OnQueryAsync ( localizer ) ) ;
8921+ pb . Add ( a => a . TableColumns , foo => builder =>
8922+ {
8923+ builder . OpenComponent < TableColumn < Foo , string > > ( 0 ) ;
8924+ builder . AddAttribute ( 1 , "Field" , "Name" ) ;
8925+ builder . AddAttribute ( 2 , "FieldExpression" , Utility . GenerateValueExpression ( foo , "Name" , typeof ( string ) ) ) ;
8926+ builder . AddAttribute ( 3 , "Width" , 80 ) ;
8927+ builder . CloseComponent ( ) ;
8928+
8929+ builder . OpenComponent < TableColumn < Foo , string > > ( 0 ) ;
8930+ builder . AddAttribute ( 3 , "Field" , "Address" ) ;
8931+ builder . AddAttribute ( 4 , "FieldExpression" , Utility . GenerateValueExpression ( foo , "Address" , typeof ( string ) ) ) ;
8932+ builder . CloseComponent ( ) ;
8933+ } ) ;
8934+ } ) ;
8935+ } ) ;
8936+
8937+ // 由于启用了客户端持久化 Name 列宽使用 100 而非 80
8938+ var table = cut . FindComponent < Table < Foo > > ( ) ;
8939+ Assert . Equal ( 100 , table . Instance . Columns [ 0 ] . Width ) ;
8940+
8941+ // 清除客户端状态
8942+ await cut . InvokeAsync ( ( ) => table . Instance . ClearTableColumnClientStatus ( ) ) ;
8943+ invoker . VerifyInvoke ( "clearColumnStates" ) ;
8944+ Assert . Equal ( 80 , table . Instance . Columns [ 0 ] . Width ) ;
8945+ }
8946+
89008947 [ Theory ]
89018948 [ InlineData ( true ) ]
89028949 [ InlineData ( false ) ]
0 commit comments