2016-04-26 40 views
0

我有WPF LisView作为展现在ListView Categories IMAGE商店WPF的ListView值/物品进入数据库

现在,我遇到的挑战保存的物品/值的ListView到数据库中,这是我使用的代码保存项目。

SelectedCategory sc = new SelectedCategory(); 
SQLiteConnection con = new SQLiteConnection(" Data Source=database.sqlite; Version=3; Compress=True; "); 
con.Open(); 
string query = " INSERT INTO income_details (name, amount) VALUES (@1, @2) "; 
for (int i = 0; i < ListView_Selected_Category.Items.Count; i++) 
{ 
    SQLiteCommand cmd = new SQLiteCommand(query, con); 
    cmd.Parameters.Add(new SQLiteParameter("@1", ListView_Selected_Category.Items[0])); 
    cmd.Parameters.Add(new SQLiteParameter("@2", ListView_Selected_Category.Items[0])); 
    cmd.ExecuteNonQuery(); 
} 
MessageBox.Show("Saved"); 
con.Close(); 

因为我不能得到ListView列。

请真的需要帮助,谢谢提前。

+1

问题是什么?你有没有收到任何错误信息? – Amine

+0

你确定你不是指DataGrid吗?至于ListView,你需要获得对象的基础连接(ItemsSource),并且应该有绑定的字段“Selected”或类似的东西 –

回答

0

如果正确实施的MVVM彭定康,那么你将有你的ListView从POCO对象(最有可能从定义的数据库连接实体框架的工作已经)通过视图模型

模型阅读

ListView中的ItemSource = “{绑定列表}”/>

其中绑定点到一个ObservableCollection称为列表

和保存操作是这样的

public void Save_Click(object sender, eventargs args) 
{ 
    foreach(var item in List.Where(vm=>vm.IsSelected)) 
    { 
     item.Save(); 
    } 
    MessageBox.Show("Saved"); 
} 

和视图模型是这样的

public class ViewModel 
{ 
    public Model Model{get;set;} 
    public bool IsSelected{get;set;} 
    public int Val1{get;set;} 
    public string Val2{get;set;} 
    public void Save() 
    { 
     //Copy ViewModel to Model and trigger Save Logic 
    } 
    public void Cancel() //allows undoing 
    { 
     //Copy Model to ViewModel 
    } 
} 

那么如果你正在做手工,而不EF或别的东西

public class Model 
{ 
    public int Val1{get;set;} 
    public string Val2{get;set;} 

    public void Save() 
    { 
     SelectedCategory sc = new SelectedCategory(); 
     using(SQLiteConnection con = new SQLiteConnection(" Data Source=database.sqlite; Version=3; Compress=True; ")) 
     { 
      con.Open(); 
      string query = " INSERT INTO income_details (name, amount) VALUES (@1, @2) "; 
      SQLiteCommand cmd = new SQLiteCommand(query, con); 
      cmd.Parameters.Add(new SQLiteParameter("@1", Val1); 
      cmd.Parameters.Add(new SQLiteParameter("@2", Val2); 
      cmd.ExecuteNonQuery(); 
     } 
    } 
) 

注:您还可以将其更改为一个静态函数并且如果您想多次使用连接,则传入多个模型