2013-04-27 62 views
1

我有一個從SQL數據庫填充GridView中選擇更新按鈕更新從SQL數據庫中的特定記錄,在GridView的每一行,然後中有一個更新按鈕。現在我所要做的是,當我在一個特定的行,我想我的數據庫來設置特定行從活動= true來激活=假的更新按鈕點擊。我如何讓我的Linq查詢選擇我的數據庫中的特定數據行並只更新該項目?從一個GridView

下面是創建我的按鈕在GridView

<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#代碼我的asp.net代碼。

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(); 
    } 

回答

0

是你輸入的完全一樣的源代碼嗎?如果是這樣的:

cmd.Active = false;後嘗試Context.Entry(cmd.Active).State = EntityState.Modified;

這應該告訴的DbContext當你打電話「的SaveChanges」以更新該實體的值。爲了確保您的變更實際上是被保存的我會做到以下幾點:

var updateSuccessful = db.SaveChanges() > 0; 

如果updateSuccessful等於真,則更新工作。

+0

變種CMD = db.Incidents.FirstOrDefault(X => x.IncidentID ==/*您的值* /); 這不會工作,我需要在GridView知道哪些incidentID我指當我點擊刪除按鈕。 因此,這段代碼應該看起來像這樣即時猜測 其中i.IncidentID == GridView中的記錄的當前ID – user2285916 2013-04-27 15:06:17

+0

cmd.Active = false之後;嘗試Context.Entry(cmd.Active).STATE = EntityState.Modified不工作要麼VS犯規知道什麼Context.Entry是 – user2285916 2013-04-27 15:09:13

+0

什麼是父類「上下文」的?我假設它是DbContext或其他實體框架上下文。另外,在你的問題中,你不要指定你的代碼運行時得到的結果。你能否添加這些信息? – 2013-05-01 03:01:41

0

你應該嘗試這樣的SQL命令。 如果您正在使用實體框架,你應該寫db.Entry(cmd).State = EntityState.Modified;cmd.Active = false; 後,還要確保在您的數據庫激活列實際上是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(); 
} 
0

檢查您的提取對象是否爲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 . 

}