1

我有一个从 SQL 数据库填充的 GridView,gridview 中的每一行都有一个更新按钮。现在我要做的是,当我单击特定行的更新按钮时,我希望我的数据库将该特定行从 active = true 设置为 active = false。我如何让我的 Linq 查询在我的数据库中选择特定的数据行并仅更新该项目?

这是我在 gridView 中创建 Button 的 asp.net 代码

<telerik:GridTemplateColumn UniqueName="TemplateUpdateColumn">
<ItemTemplate>
<asp:LinkButton ID="UpdateLink" runat="server" CommandName="Update" Text="Update" OnClientClick="return confirm('You are about to update this Incident. \nAre you sure?')"><img src="../Images/icons/Trash.png" class="images" alt="Action" style="margin-left:5px"/></asp:LinkButton><br />Delete
</ItemTemplate>
</telerik:GridTemplateColumn>

这是我的 C# 代码,它应该更新我的数据库中的特定记录。

protected void grdIncidents_UpdateCommand(object sender, GridCommandEventArgs e)
    {
       Context db = new Context();

        var cmd = (from i in db.Incidents 
                   where i.IncidentID == //8
                   select i).FirstOrDefault();

        cmd.Active = false;

        db.SaveChanges();
    }
4

3 回答 3

0

检查您获取的对象是否为空。如果为空,则无法更新。

protected void grdIncidents_UpdateCommand(object sender, GridCommandEventArgs e) { Context db = new Context();

Incident cmd = (from i in db.Incidents 
       where i.IncidentID == //8
       select i).FirstOrDefault();

    if (cmd !=null)
    {
        cmd.Active = false;

        db.SaveChanges();
    }
    else
    //Show some kind of message here like unable to update .

}

于 2013-04-29T05:35:51.507 回答
0

您的源代码与您输入的完全相同吗?如果是这样:

cmd.Active = false;尝试后立即Context.Entry(cmd.Active).State = EntityState.Modified;

这应该告诉 DbContext 在您调用“SaveChanges”时更新该实体上的值。为了确保您的更改实际被保存,我将执行以下操作:

var updateSuccessful = db.SaveChanges() > 0;

如果updateSuccessful等于 true,则更新有效。

于 2013-04-27T14:23:55.027 回答
0

你应该试试这样的 sql 命令。如果您使用的是实体框架,您应该编写db.Entry(cmd).State = EntityState.Modified;,之后cmd.Active = false; 还要确保 DB 中的 Active 列实际上是 bool 类型。

protected void grdIncidents_UpdateCommand(object sender, GridCommandEventArgs e)
{
   Context db = new Context();

    var cmd = db.Incidents.FirstOrDefault(x=> x.IncidentID == /*your value*/);

    cmd.Active = false;
    db.SubmitChanges();
}
于 2013-04-27T14:24:27.890 回答