我正在从SQLite数据库中获取数据,并将列表插入ListView中。但是在我的ListView中重复了相同的数据。
这是获取数据的代码:
public List<Objectdata> getAllData()
{
m_dbConnection = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;");
m_dbConnection.Open();
List<Objectdata> dataList = new List<Objectdata>();
Objectdata oD = new Objectdata();
string sql = "select DISTINCT * from data ORDER BY id DESC";
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
SQLiteDataReader reader = command.ExecuteReader();
while (reader.Read())
{
oD.id = reader["id"].ToString();
oD.name = reader["name"].ToString();
oD.address = reader["address"].ToString();
oD.mobile = reader["mobile"].ToString();
oD.date = reader["date"].ToString();
oD.price = reader["price"].ToString();
oD.warranty = reader["warranty"].ToString();
oD.month = reader["month"].ToString();
dataList.Add(oD);
}
m_dbConnection.Close();
return dataList;
}
这是将数据添加到ListView的代码:
private void button_refresh_Click(object sender, RoutedEventArgs e)
{
listView.Items.Clear();
TableController a = new TableController();
dataList = a.getAllData();
listView.ItemsSource = dataList;
}
这是xaml中的listview代码:
<ListView x:Name="listView" HorizontalAlignment="Left" Height="400" Margin="10,76,0,0" VerticalAlignment="Top" Width="645" >
<ListView.View>
<GridView>
<GridViewColumn Header="Id" Width="20" DisplayMemberBinding="{Binding id}" />
<GridViewColumn Header="Name" Width="90" DisplayMemberBinding="{Binding name}" />
<GridViewColumn Header="Adrress" Width="130" DisplayMemberBinding="{Binding address}" />
<GridViewColumn Header="Mobile" Width="100" DisplayMemberBinding="{Binding mobile}" />
<GridViewColumn Header="Date" Width="80" DisplayMemberBinding="{Binding date}" />
<GridViewColumn Header="Price" Width="60" DisplayMemberBinding="{Binding price}" />
<GridViewColumn Header="Warranty" Width="80" DisplayMemberBinding="{Binding warranty}" />
<GridViewColumn Header="Month" Width="50" DisplayMemberBinding="{Binding month}" />
</GridView>
</ListView.View>
</ListView>
助手类:
class Objectdata
{
public String id
{
get; set;
}
public String name
{
get; set;
}
public String month
{
get; set;
}
public String mobile
{
get; set;
}
public String address
{
get; set;
}
public String date
{
get; set;
}
public String price
{
get; set;
}
public String warranty
{
get; set;
}
}
这样的输出:
您永远不会创建一个新Objectdata
元素,而总是在循环中更新相同的元素。因此,列表中的所有元素都引用相同的对象。添加
oD = new Objectdata()
在将对象添加到列表后,在循环中。或将您当前的声明移动oD
为循环主体的第一条语句。无论如何,您似乎都不会在循环外使用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句