通过从gridview中选择更新按钮,从SQL数据库更新特定记录

时间:2013-04-27 13:58:28

标签: c# asp.net sql linq radgridview

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

这是我的asp.net代码,它在gridView

中创建我的Button
<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();
    }

3 个答案:

答案 0 :(得分:0)

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

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

之后

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

var updateSuccessful = db.SaveChanges() > 0;

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

答案 1 :(得分:0)

你应该像这样尝试sql命令。 如果您使用的是实体框架,则应在db.Entry(cmd).State = EntityState.Modified;之后编写cmd.Active = false; 还要确保数据库中的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();
}

答案 2 :(得分:0)

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

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 .

}