作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个从 SQLite 表填充的 Datagrid
Connect();
mAdapter = new SQLiteDataAdapter("SELECT * FROM clients", mConn);
mTable = new DataTable();
mAdapter.Fill(mTable);
dataGrid.ItemsSource = mTable.DefaultView;
mConn.Close();
我可以让它删除选定的项目,但是如何让它根据 ID 删除选定的项目
private void dataGrid_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == System.Windows.Input.Key.Delete)
{
if (dataGrid.SelectedItem == null)
return;
DataRowView rowView = (DataRowView)dataGrid.SelectedItem;
Connect();
using (SQLiteCommand mCmd = new SQLiteCommand("DELETE FROM clients WHERE ID=" + rowView["ID"], mConn))
{
mCmd.ExecuteNonQuery();
}
mAdapter.Update(mTable);
mConn.Close();
}
}
最佳答案
看起来您想使用原始查询来删除项目。在本例中,要访问 DataGrid 上的所选项目,您可以使用属性 SelectedItems
。您可以使用 1 个查询删除每个项目,也可以使用 1 个查询删除一组项目,以下是使用 1 个查询删除每个项目的代码:
if (e.Key == System.Windows.Input.Key.Delete) {
if (dataGrid.SelectedItem == null)
return;
Connect();
foreach(var item in dataGrid.SelectedItems.Cast<DataRowView>()) {
using (var mCmd = new SQLiteCommand("DELETE FROM clients WHERE ID=" + item["ID"], mConn)) {
mCmd.ExecuteNonQuery();
}
}
mAdapter.Update(mTable);
mConn.Close();
}
以下是使用 1 个查询删除一组项目的代码:
if (e.Key == System.Windows.Input.Key.Delete) {
if (dataGrid.SelectedItem == null)
return;
Connect();
const int blockSize = 100;
var inOperands = dataGrid.SelectedItems
.Select((e,i) => new {
row = ((DataRowView) e)["ID"], i
})
.GroupBy(e => e.i / blockSize)
.Select(g => string.Format("({0})",
string.Join(",", g.Select(o => o.row))));
foreach(var inOperand in inOperands) {
using (var mCmd = new SQLiteCommand("DELETE FROM clients WHERE ID IN " + inOperand, mConn)) {
mCmd.ExecuteNonQuery();
}
}
mAdapter.Update(mTable);
mConn.Close();
}
顺便说一句,您应该使用SQLiteParameter
,而不是手动连接值以避免查询注入(inject)。
关于c# - WPF 使用数据网格删除所选项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33149938/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!