我从我的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;
}
}
这是输出:
答案 0 :(得分:1)
您永远不会创建新的Objectdata
元素,但始终在循环中更新相同的元素。因此,列表中的所有元素都引用相同的对象。添加
oD = new Objectdata()
在将对象添加到列表后的循环中。或者将您当前的oD
声明移动到循环体的第一个声明。无论如何,你好像不在循环之外使用它。