我有一个Windows窗体DataGridView
,其中我显示了两个表的组合。
我有一个删除行的删除功能。我的问题是每当我执行删除功能时,其中一列消失。
以下是将表调用到datagridview
的代码SqlDataAdapter da = new SqlDataAdapter(@"SELECT tblRequest.Id, usrTbl.nama, tblRequest.userId, tblRequest.leaveDays, tblRequest.leaveRequest, tblRequest.startDate, tblRequest.endDate, tblRequest.supId, tblRequest.permission FROM tblRequest CROSS JOIN usrTbl WHERE tblRequest.userId = usrTbl.Id AND tblRequest.supId='" + this.lblName.Text + "'", sc);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
删除操作后消失的列是nama
列,它是与usrTbl
一起加入的唯一tblRequest
实体。
我的T-SQL是
CREATE TABLE [dbo].[tblRequest]
(
[Id] INT IDENTITY (1, 1) NOT NULL,
[userId] INT NOT NULL,
[leaveDays] INT NOT NULL,
[leaveRequest] TEXT NULL,
[startDate] TEXT NULL,
[endDate] TEXT NULL,
[supId] INT NULL,
[permission] TEXT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_tblRequest_ToTable]
FOREIGN KEY ([userId]) REFERENCES [dbo].[usrTbl] ([Id])
ON DELETE CASCADE ON UPDATE CASCADE
);
我的删除代码:
string Query = "delete from tblRequest where Id='" + this.idTxt.Text + "';";
SqlConnection sqlCon = new SqlConnection(con);
SqlCommand sqlCom = new SqlCommand(Query, sqlCon);
有没有人知道我做错了什么?
答案 0 :(得分:0)
您似乎删除了SQL表中的行。到目前为止一切顺利,但只要您刷新网格,手动添加的列nama
就会消失,因为它不在您数据库的表中。
尝试添加不在sql语句中但在代码中甚至在设计器中的列。这应该可以解决问题。
或者如我在帖子下面的评论中所述,请查看此讨论,了解如何使用tableadapter创建数据表以更轻松地管理SQL数据。