删除记录

时间:2017-01-03 14:32:38

标签: c# sql sql-server datagridview

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

我有一个删除行的删除功能。我的问题是每当我执行删除功能时,其中一列消失。

before delete

after delete

以下是将表调用到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);

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

1 个答案:

答案 0 :(得分:0)

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

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

或者如我在帖子下面的评论中所述,请查看此讨论,了解如何使用tableadapter创建数据表以更轻松地管理SQL数据。

https://social.msdn.microsoft.com/Forums/en-US/88acfb48-b5b2-42d2-881d-5cd14eac4790/what-is-the-fastest-way-to-fill-datatable-from-sql-server?forum=csharpgeneral