c# – 使数据网格与mysql数据库保持同步
发布时间:2020-12-15 21:16:41 所属栏目:百科 来源:网络整理
导读:我在 WPF中试验数据绑定 我有这个绑定到mysql视图的数据网格,它只是只读,但我希望它在对数据库进行更改时自动刷新. 在谷歌找不到任何有用的东西,我不知道从哪里开始. 这是dataprovider类. class ConDataProvider{ private MySqlDataAdapter adapter; private
我在
WPF中试验数据绑定
我有这个绑定到mysql视图的数据网格,它只是只读,但我希望它在对数据库进行更改时自动刷新. 这是dataprovider类. class ConDataProvider { private MySqlDataAdapter adapter; private Data data; private DataTable table; public ConDataProvider(string query) { data = new Data(); table = new DataTable("con_FullGrid"); adapter = data.getAdapter(query); adapter.Fill(table); } public DataView GetDView() { dv = new DataView(); dv.Table = table; return dv; } } 而窗口的XAML <Window x:Class="HelioWPF_Alpha01.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:local="clr-namespace:HelioWPF_Alpha01" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="676" Width="924" MinHeight="300" MinWidth="463" Background="{x:Null}"> <Window.Resources> <ObjectDataProvider x:Key="ConDataProvider" ObjectType="{x:Type local:ConDataProvider}"> <ObjectDataProvider.ConstructorParameters> <sys:String>SELECT * FROM con_FullGrid</sys:String> </ObjectDataProvider.ConstructorParameters> </ObjectDataProvider> <ObjectDataProvider x:Key="btable" ObjectInstance="{StaticResource ConDataProvider}" MethodName="GetDView"/> </Window.Resources> <Grid Name="mainGrid" DataContext="{Binding Source={StaticResource btable}" KeyDown="mainGrid_KeyDown" FlowDirection="LeftToRight" > <DataGrid AutoGenerateColumns="True" ItemsSource="{Binding}" Name="dataGrid1" FrozenColumnCount="20" RowHeight="25" Grid.ColumnSpan="4" ColumnWidth="*" MouseDoubleClick="dataGrid1_MouseDoubleClick" SelectionMode="Single" Grid.Row="2" Grid.Column="1" TabIndex="1" GotKeyboardFocus="dataGrid1_GotKeyboardFocus"> <DataGrid.AlternatingRowBackground> <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5"> <GradientStop Color="Black" Offset="0" /> <GradientStop Color="#16436DF8" Offset="0" /> </LinearGradientBrush> </DataGrid.AlternatingRowBackground></DataGrid> </Grid> 我一直在做的是通过在后面的代码中重新初始化ConDataProvider类并在各种事件上重新绑定datagrid来伪装它. Data类只包含连接字符串和一些与数据库交互的方法. 提前致谢. 解决方法
如果你连接一些
Reactive Extensions怎么样?
你可以做的是创建一个每X秒轮询你的数据库的observable.然后让你的Observer连接到那个observable.在Observer的OnNext事件中,您可以将数据添加到网格中,或重新绑定任何内容. 从本质上讲,您将创建一个位于数据库和应用程序之间的内容,用于侦听更改并将这些更改推送给您. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |