Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除记录后DataGridView列消失_C#_Sql_Sql Server_Datagridview - Fatal编程技术网

C# 删除记录后DataGridView列消失

C# 删除记录后DataGridView列消失,c#,sql,sql-server,datagridview,C#,Sql,Sql Server,Datagridview,我有一个Windows窗体DataGridView,其中显示两个表的组合 我有一个删除函数,可以删除一行。我的问题是,每当我执行delete函数时,其中一列就会消失 下面是将表调用到datagridview中的代码 SqlDataAdapter da=new SqlDataAdapter(@“选择tblRequest.Id,usrTbl.nama,tblRequest.userId,tblRequest.leaveDays,tblRequest.leaveRequest,tblRequest

我有一个Windows窗体
DataGridView
,其中显示两个表的组合

我有一个删除函数,可以删除一行。我的问题是,每当我执行delete函数时,其中一列就会消失

下面是将表调用到datagridview中的代码

SqlDataAdapter da=new SqlDataAdapter(@“选择tblRequest.Id,usrTbl.nama,tblRequest.userId,tblRequest.leaveDays,tblRequest.leaveRequest,tblRequest.startDate,tblRequest.endDate,tblRequest.supId,tblRequest.permission从tblRequest交叉加入usrTbl,其中tblRequest.userId=usrTbl.Id和tblRequest.supId=”+this.lblName.Text+“”,sc);
DataTable dt=新的DataTable();
da.填充(dt);
dataGridView1.DataSource=dt;
删除操作后消失的列是
nama
列,它是唯一与
tblRequest
连接的
usrTbl
实体

我的T-SQL是

创建表[dbo]。[tblRequest]
(
[Id]整数标识(1,1)不为空,
[userId]INT不为NULL,
[leaveDays]INT不为空,
[leaveRequest]文本为空,
[startDate]文本为空,
[endDate]文本为空,
[supId]INT NULL,
[权限]文本为空,
主键群集([Id]ASC),
约束[FK_tblRequest_ToTable]
外键([userId])引用[dbo].[usrTbl]([Id])
关于删除级联关于更新级联
);
我的删除代码:

string Query=“从tblRequest中删除,其中Id=”+this.idTxt.Text+”;”;
SqlConnection sqlCon=新的SqlConnection(con);
SqlCommand sqlCom=新的SqlCommand(查询,sqlCon);

有人知道我做错了什么吗?

您似乎删除了SQL表中的行。到目前为止还不错,但只要刷新网格,手动添加的列
nama
就会消失,因为它不在数据库的表中

尝试不在sql语句中添加列,而是在代码中,甚至在设计器中添加列。这应该可以解决问题

或者,正如我的帖子下面的评论中所提到的,查看此讨论,了解如何使用tableadapter创建datatable,以便更轻松地管理SQL数据


对于datagridvie,在分配数据源后,尝试调用DataGridView的
DataGridView.Refresh()
。此外,我还将了解如何使用
参数构建查询,并了解
SQL注入
。在做任何其他事情之前,您需要了解、理解并开始使用参数化查询。这对sql注入是完全开放的。我的朋友bobby tables喜欢这样的代码。如果OP将select查询中的原始数据绑定到DataTable,那么如果他们想要删除行,那么实际上不需要使用Delete命令就可以做到这一点通过
数据表,使用
过滤
,从数据表中选择
方法,从Select只执行一次数据库访问,从in执行删除memory@MethodMan是的,那会让事情变得容易得多。我可以编辑我的帖子来参考一个说明如何执行该操作的文档。@Cataklysim你能详细介绍一下这个方法吗?从你提供的文章中我还是不明白。Myb基于我的问题的一个例子?我不是要你解决我的问题,只是告诉我正确的路径…@jenan你能告诉我们你按下删除按钮后会发生什么吗?还有什么别的吗?或者你只是调用你的delete方法?@Cataklysim我在这篇文章中提到的上面的图片显示,在我单击delete按钮后,联接表列“nama”消失了。当我试图删除下一行时,它返回错误未处理异常。