我有一个Windows Presentation Foundation,我有一个名为“Worker”的数据库和一个属于这个数据库的表,该表名为TestTable,有6列:Id,Name,Lastname,Gender,Email和Password,I已经添加了一些元素,在Mainwindow中,用户可以看到除了Id之外的数据库列中包含的所有信息,我保持Id不在用户眼中,所以我有不同的Listboxs信息:ListboxNames,ListboxLastnames,ListboxGenders等。 ..我做了一个允许我根据ListboxNames.SelectedItem从数据库中删除行的方法,但它使用名称删除,这不方便,因为可能有几个相同的名称,你能解释我如何得到正确的根据ListboxNames.SelectedItem的id,如何使用Id从ListBox中选择一个名称来删除?请记住,我从未向玩家展示身份证明,非常感谢! 这是我用来删除的方法,我想我需要首先从数据库中获取具有相同名称的ID,然后我必须在ID之间选择正确的ID,你只是让我知道!
private void buttonDelete_Click(object sender, RoutedEventArgs e)
{
cmd.CommandText = "delete from TestTable where name='" + listBoxListNames.SelectedItem + "'";
con.Open();
cmd.ExecuteNonQuery();
con.Close();
listBoxListNames.Items.Clear();
listBoxListLastnames.Items.Clear();
listBoxListGenders.Items.Clear();
listBoxListEmails.Items.Clear();
listBoxListPasswords.Items.Clear();
ShowDatabase();
}
答案 0 :(得分:1)
在这种情况下,您可以使用listbox的SelectedValue
属性;为此,您需要以下列方式绑定列表框:
列表框定义:
<ListBox Name="myList" SelectedValuePath="myID" DisplayMemberPath="myTextField"... />
绑定:
DataTable myDataTable= getDataTable();//populate datatable from database
myList.SelectedValuePath = "myID";
myList.DisplayMemberPath = "myTextField";
myList.ItemsSource = myDataTable;
然后,您可以使用SelectedValue
重新编写代码以删除项目:
private void buttonDelete_Click(object sender, RoutedEventArgs e)
{
cmd.CommandText = "delete from TestTable where itemID=@myID";
cmd.Parameters.AddWithValue("myID", myList.SelectedValue);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
//Do rest of operations here
}
注意:您必须使用parameterized
查询以避免注入;所以也要看一下查询