- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
尝试更新绑定(bind)到数据集的 listView 时,我遇到了一些奇怪的问题。
数据集从 SQL 获取信息,需要每 5 分钟自动更新一次。目前我正在使用 backgroudWorker 获取新信息并将其插入到数据集中。
然后在 RunWorkerCompleted 事件上我这样做
listView1.DataContex = dataSet.Tables["table"].DefaultView
DoWork 事件包含这样的内容
dataSet.Clear();
SqlDataAdapter adapter = new SqlDataAdapter(
"SELECT [ContainerID] ,[UserID], [Spur], [Wave] ,[Date] FROM [ScannedItems] " +
"WHERE [Message] LIKE '%Success%'" +
"UNION ALL " +
"SELECT [ContainerID] ,[UserID], [Spur], [Wave] ,[Date] FROM [Workstation].[dbo].[AllSpurs] " +
"WHERE [Message] LIKE '%" + "Success" + "' ORDER BY [Date] DESC", connection);
DataTableMapping mapping = adapter.TableMappings.Add("Table", "Packages Scanned");
mapping.ColumnMappings.Add("ContainerID", "Cont");
mapping.ColumnMappings.Add("UserID", "User");
mapping.ColumnMappings.Add("Spur", "Spur");
mapping.ColumnMappings.Add("Wave", "Wave");
mapping.ColumnMappings.Add("Date", "Date");
connection.Open();
adapter.FillSchema(dataSet, SchemaType.Mapped);
adapter.Fill(dataSet);
connection.Close();
这在我调用 worker.RunWorkerAsync() 时有效;在启动时。
然而,当计时器调用它时,表格变为空白(所有数据都被删除)。如果我尝试在 listVIew 中滚动,我会收到错误
Object reference not set to the instance of an object
但是,如果我单击其中一列的标题,新数据就会变得可见并且可以滚动。
谁能告诉我我做错了什么。
这是 listView 的 XAML
<ListView ItemContainerStyle="{StaticResource cnListView}" ItemsSource="{Binding Path=Table}" Margin="7,5,31,7" Name="listView2" SelectionMode="Multiple" util:GridViewSort.AutoSort="True" LostFocus="LostFocus">
<ListView.View>
<GridView x:Name="gridView1" AllowsColumnReorder="False" ColumnHeaderTemplate="{StaticResource cnDataViewHeader}">
<GridViewColumn DisplayMemberBinding="{Binding Path=Cont}" util:GridViewSort.PropertyName="Cont" Header="ContainerID" Width="350" />
<GridViewColumn DisplayMemberBinding="{Binding Path=User}" util:GridViewSort.PropertyName="User" Header="User" Width="200" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Spur}" util:GridViewSort.PropertyName="Spur" Header="Spur" Width="120" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Wave, StringFormat='dd-MM-yyyy HH:mm:ss'}" util:GridViewSort.PropertyName="Wave" Header="Wave" Width="250" />
<GridViewColumn DisplayMemberBinding="{Binding Path=Date, StringFormat='dd-MM-yyyy HH:mm:ss'}" util:GridViewSort.PropertyName="Date" Header="Time Scanned" Width="250" />
</GridView>
</ListView.View>
</ListView>
非常感谢
小项目完整代码:
XAML
<Window x:Class="backWorkerTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="502" Width="989">
<Grid>
<ListView ItemsSource="{Binding MeetCollection}" Height="340" HorizontalAlignment="Left" Margin="12,12,0,0" Name="listView1" VerticalAlignment="Top" Width="914">
<ListView.View>
<GridView>
<GridViewColumn Header="Test" DisplayMemberBinding="{Binding Path=Test}"/>
<GridViewColumn Header="Test2" DisplayMemberBinding="{Binding Path=Test2}"/>
</GridView>
</ListView.View>
</ListView>
<Button Content="Button" Height="63" Name="button1" Width="288" Click="button1_Click" Margin="368,388,311,12" />
</Grid>
c#
namespace backWorkerTest
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
DataSet dataSet = new DataSet();
BackgroundWorker backWorker = new BackgroundWorker();
public MainWindow()
{
InitializeComponent();
dataSet.Tables.Add("Stores");
backWorker.DoWork += new DoWorkEventHandler(backWorker_DoWork);
backWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backWorker_RunWorkerCompleted);
backWorker.RunWorkerAsync();
}
void GetData()
{
using (SqlConnection con = new SqlConnection(@"Data Source=CN-LT08\Nick;Initial Catalog=SorterAdmin;" +
"User=sa; Password=Altrincham09"))
{
SqlDataAdapter sql = new SqlDataAdapter("SELECT [Store Number], [Store Name] FROM [Store_Info]", con);
DataTableMapping mapping = sql.TableMappings.Add("Table", "Stores");
mapping.ColumnMappings.Add("Store Number", "Test");
mapping.ColumnMappings.Add("Store Name", "Test2");
con.Open();
sql.FillSchema(dataSet, SchemaType.Mapped);
sql.Fill(dataSet);
con.Close();
}
}
private void button1_Click(object sender, RoutedEventArgs e)
{
backWorker.RunWorkerAsync();
}
private void backWorker_DoWork(object sender, DoWorkEventArgs e)
{
dataSet.Clear();
GetData();
}
private void backWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
listView1.ItemsSource = dataSet.Tables["Stores"].DefaultView;
listView1.UpdateLayout();
}
}
最佳答案
尝试刷新方法。重新绑定(bind)后。
关于c# - 更新绑定(bind)到 dataSet dataTable 的 listView,它从 SQL c# wpf 中查找数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13288467/
如果我用 dataset.batch(n).prefetch(m), 将预提取m个批次或m个 sample ? 最佳答案 Dataset.prefetch(m) 转换预取其直接输入的m元素。在这种情况
根据 TensorFlow documentation 、tf.contrib.data.Dataset 类的 prefetch 和 map 方法,都有一个名为 buffer_size 的参数. 对于
我正在使用 Flink 0.10.1 的 DataSet API 编写应用程序。我可以在 Flink 中使用单个运算符获取多个收集器吗? 我想做的是如下所示: val lines = env.read
为了使用 Google Colabs TPU,我需要一个 tf.dataset.Dataset .那么如何在这样的数据集上使用数据增强? 更具体地说,到目前为止我的代码是: def get_datas
我有一个包含 2 个相关数据表(主数据表和详细信息)的数据集。我想将与我的过滤器匹配的数据(例如主数据列 A =“XXX”)复制到另一个数据集。 现在我发现这个过程需要很长时间(1k 条记录大约需要一
我正在使用 .pvd文件同时加载多个文件到 Paraviw。对于具有单个数据集的时间序列,该文件看起来像这样: 我想指定要与 a.*.vtu 一起加载的其他文件(
我听说 Google 主办(或将举办)一场网络分类竞赛,他们提供了一个大型(170k+ 文档)网站数据集,这些网站被分为多个类别(体育、计算机、科学等),我尝试环顾四周在他们的 2009 年到 201
谁能给我解释一下 DataSet.Copy() vs Dataset.Clone()也让我知道一些我们可以使用这些的场景 最佳答案 Clone 将创建一个新的空数据集,其架构(表和列)与旧数据集相同。
dataset = dataset.batch(50) dataset = dataset.prefetch(buffer_size=1) 是预取 1 个批次还是 1 个元素? 根据 tensorfl
在 Delphi 中,与 Dataset.Next 相比,使用 Dataset.Prior 是否会降低性能? 背景: 我有一个在数据集中搜索特定记录的例程。我从数据集中的最后一条记录开始,然后使用 D
我正在使用 Spark(2.0) 开发 Spark SQL,并使用 Java API 读取 CSV。 CSV 文件中有一个双引号、逗号分隔的列。例如:“Express Air,Delivery Tru
为什么要使用DataSet.BeginInit 和DataSet.EndInit? 我已经经历了official msdn documentation ,它说 Begins the initializ
我正在尝试向新的数据集 X 添加一个位于不同数据集 Y 中的数据表。如果我直接添加它,我会得到以下错误: DataTable already belongs to another DataSet. 我
我有一个表示为形状为 (num_features, num_examples) 的 NumPy 矩阵的数据集,我希望将其转换为 TensorFlow 类型 tf.Dataset。 我正在努力理解这两种
这是 question 的转发在 ai.stackexchange 中询问。由于该论坛没有太多吸引力,我想我可以在这里尝试一下机会。 我有一个特定对象的不同尺寸的图像数据集。该物体的一些图像也处于不同
我有两个数据集: main_ds = tf.data.Dataset.from_tensor_slices(list(range(1000, 1100))) backgroud_ds = tf.dat
拥有Dataset单列 json 字符串: +--------------------+ | value| +--------------------+ |{"Contex
我正在尝试解决 Azure 数据工厂中的以下场景: 我在 Azure Blob 存储中有大量文件夹。每个文件夹包含不同数量的 parquet 格式的文件。文件夹名称包含生成该文件夹中包含的数据的日期,
我正在尝试解决 Azure 数据工厂中的以下场景: 我在 Azure Blob 存储中有大量文件夹。每个文件夹包含不同数量的 parquet 格式的文件。文件夹名称包含生成该文件夹中包含的数据的日期,
我有一个顺序数据集,我可以从中创建窗口来训练 RNN。在某些情况下,我想扔掉某些 window 。但是,当我使用 dataset.window 和 dataset.filter 时,管道内部会出现一些
我是一名优秀的程序员,十分优秀!