如何从ListView中删除选中的项目,并且更改应该在带有SQL Server 2008的C#Windows窗体中的SQL Server2008的表中可见 [英] how to delete checked items from listview and that changes should be visible in table in sql server2008 from c# windows forms with sql server 2008
问题描述
您好,我叫vishal,我想知道如何在listview中删除选中的项目,并且一旦删除,还应该从带有SQL Server2008的C#Windows窗体中的SQL Server表中删除吗?
我的表单名为: frmSearchDialyzer ,具有一个名为: lstSearch 的列表视图.下面给出的是我在c#中的表单代码:
hi my name is vishal i was wondering on how to delete checked items in listview and once deleted should also be deleted from table in sql server from c# windows forms with sql server2008?
i have a listview named:lstSearch in my form named:frmSearchDialyzer. Given below is my form code in c#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace DRRS_CSharp
{
public partial class frmSearchDialyzer : Form
{
public frmSearchDialyzer()
{
InitializeComponent();
this.lstSearch.DoubleClick += new System.EventHandler(this.lstSearch_DoubleClick);
}
private void lstSearch_DoubleClick(object sender, EventArgs e)
{
if (MessageBox.Show("Are you sure to delete this dialyzer information?", "DRRS", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
{
foreach (ListViewItem ld in lstSearch.SelectedItems)
{
lstSearch.Items.Remove(ld);
}
}
}
private void btnSearch_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("Data Source=NPD-4\\SQLEXPRESS;Initial Catalog=DRRS;Integrated Security=true");
lstSearch.Items.Clear();
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand();
DataSet ds;
SqlDataAdapter adp = new SqlDataAdapter();
lstSearch.Columns.Add("DialyzerID", 140, HorizontalAlignment.Left);
lstSearch.Columns.Add("Manufacturer", 260, HorizontalAlignment.Left);
lstSearch.Columns.Add("Size", 95, HorizontalAlignment.Center);
lstSearch.Columns.Add("PackedVolume", 87, HorizontalAlignment.Center);
lstSearch.Columns.Add("Patient Name", 170, HorizontalAlignment.Right);
lstSearch.Visible = true;
lstSearch.View = View.Details;
lstSearch.GridLines = true;
if (txtDialyzerID.Text.Trim() != "")
{
cmd = new SqlCommand("Select d.dialyserID,d.manufacturer,d.dialyzer_size,d.packed_volume,p.patient_first_name+' '+p.patient_last_name as patient_name from dialyser d,patient_name p where p.patient_id=d.patient_id and d.dialyserID=" + txtDialyzerID.Text.Trim() + "", conn);
adp = new SqlDataAdapter(cmd);
ds = new DataSet();
adp.Fill(ds, "dialyser" + "patient_name");
dt = ds.Tables["dialyser" + "patient_name"];
}
else if (txtManufacturer.Text.Trim() != "")
{
cmd = new SqlCommand("Select d.dialyserID,d.manufacturer,d.dialyzer_size,d.packed_volume,p.patient_first_name+' '+p.patient_last_name as patient_name from dialyser d,patient_name p where p.patient_id=d.patient_id and d.manufacturer like '%" + (txtManufacturer.Text.Trim()) + "%'", conn);
adp = new SqlDataAdapter(cmd);
ds = new DataSet();
adp.Fill(ds, "dialyser" + "patient_name");
dt = ds.Tables["dialyser" + "patient_name"];
}
for (int i = 0; i < dt.Rows.Count; i++)
{
lstSearch.Items.Add(dt.Rows[i].ItemArray[0].ToString());
lstSearch.Items[i].SubItems.Add(dt.Rows[i].ItemArray[1].ToString());
lstSearch.Items[i].SubItems.Add(dt.Rows[i].ItemArray[2].ToString());
lstSearch.Items[i].SubItems.Add(dt.Rows[i].ItemArray[3].ToString());
lstSearch.Items[i].SubItems.Add(dt.Rows[i].ItemArray[4].ToString());
}
}
private void btnRemove_Click(object sender, EventArgs e)
{
foreach (ListViewItem ls in lstSearch.CheckedItems)
{
lstSearch.Items.Remove(ls);
}
}
我已启用名为: lstSearch 的列表视图的 CheckBoxes属性为 true
下面给出的是我在SQL Server2008中名为 dialyser 的表的结构:
ColumnName DataType AllowNulls
mfr_ref_number nvarchar(20)是
mfr_lot_number nvarchar(20)是
mfr_date日期是
exp_date date是
packed_volume Int是
Patient_id Int是
start_date datetime是
end_date datetime是
row_upd_date datetime是
制造商nvarchar(50)是
Dialyzer_size nvarchar(20)是
Deleted_status位是
Deleted_date datetime是
dialyserID nvarchar(20)是
close_status位是
close_date datetime是
我想要的是用户检查listview(lstSearch)中存在的某些项目,然后按以下形式按下/单击 btnRemove : frmSearchDialyzer ,然后仅选择选中的项目 >不仅必须从listview(lstSearch)中删除,而且还必须从sql server2008中名为 dialyzer 的表中删除.我知道我必须在 frmSearchDialyzer 的 btnRemove_Click 事件中使用delete命令才能获得所需的结果,但我不知道如何将其与 CheckedItems 一起使用>在我的 frmSearchDialyzer 的listview( lstSearch )中.谁能帮我吗?在解决此问题方面的任何帮助/指导将不胜感激.!
I have enabled CheckBoxes property of my listview named:lstSearch to true
Given below is structure of my table named:dialyser in sql server2008:
ColumnName DataType AllowNulls
mfr_ref_number nvarchar(20) Yes
mfr_lot_number nvarchar(20) Yes
mfr_date date Yes
exp_date date Yes
packed_volume Int Yes
patient_id Int Yes
start_date datetime Yes
end_date datetime Yes
row_upd_date datetime Yes
manufacturer nvarchar(50) Yes
dialyzer_size nvarchar(20) Yes
deleted_status bit Yes
deleted_date datetime Yes
dialyserID nvarchar(20) Yes
closed_status bit Yes
closed_date datetime Yes
What i want is when user checks some items present in listview(lstSearch) and then press/click btnRemove in form:frmSearchDialyzer then only the checked items must not only be removed from listview(lstSearch) but also from table named:dialyzer in sql server2008. I am aware that i have to use delete command in btnRemove_Click event in frmSearchDialyzer in achieving the required result but i dont know how to use it with CheckedItems in my listview(lstSearch) in frmSearchDialyzer. Can anyone help me please? Any help/guidance in solving of this problem would be greatly appreciated.!
推荐答案
我希望"DialyzerID"是您的唯一ID,如果这样的话,您的问题很简单:
Hi,
I Hope "DialyzerID" this is your unique id if so then your question is simple :
private void btnRemove_Click(object sender, EventArgs e)
{
for (int i = 0; i < lstSearch.Items.Count; i++ )
{
if (lstSearch.Items[i].Selected)
{
lstSearch.Items[i].Remove();
String DialyzerID=listView.Items[i].Subitems[1].Text;
// Here you can write your delete query
//for excample -
String query="delete from your_TableName where DialyzerID='"+ DialyzerID + "'";
}
}
}
这篇关于如何从ListView中删除选中的项目,并且更改应该在带有SQL Server 2008的C#Windows窗体中的SQL Server2008的表中可见的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!