2012-03-15 80 views
1

我有一個名爲PendingPartners的實體,它對Residents實體有導航屬性。我從這些對象,像這樣返回信息:使用ASP.NET中繼器和實體框架刪除記錄

Dim getSent = (From p In dbContext.PendingPartners _ 
         Join r In dbContext.Residents _ 
         On p.people_id_des Equals r.people_code_id _ 
         Where p.people_id_ini = people_id _ 
         Where p.semester = semester _ 
         Where p.year = year _ 
         Select r.person_name).Distinct 
     rptrSent.DataSource = getSent 
     rptrSent.DataBind() 

正如你可以在上面看到,該數據然後綁定到一箇中繼器控制,看起來像這樣的代碼:

<asp:Repeater ID="rptrSent" runat="server"> 
      <ItemTemplate> 
       <asp:Button ID="btnDeletePartner" runat="server" 
        Text="<%# Container.DataItem %>" /> 
       <br /> 
      </ItemTemplate> 
     </asp:Repeater> 

現在,我想這樣做的目的是當有人點擊刪除按鈕時,它實際上從實體刪除記錄 - 只是PendingPartner部分,不需要彙總到Resident對象。

現在,要做到這一點,我想我需要:

  1. 的ID列添加到EntitySQL查詢,例如選擇p.id,r.person_name。
  2. 將ID列綁定到中繼器,如CommandName或CommandArgument。
  3. 更改文本的綁定方式 - 因爲中繼器現在有兩列。

我知道如何更新EntitySQL,但我總是感到困惑,然後得到這個信息。進入中繼...幫助?

回答

1

我認爲你需要使用綁定功能的中繼

按鈕的文本中使用「PERSON_NAME」和命令參數使用「ID」和該命令的名稱將是「刪除」。

像這樣:

<asp:Repeater ID="rptrSent" runat="server"> 
     <ItemTemplate> 
      <asp:Button ID="btnDeletePartner" runat="server" 
       Text='<%# bind("person_name") %>' CommandArgument='<%# bind("id") %>' CommandName="Delete" /> 
      <br /> 
     </ItemTemplate> 
    </asp:Repeater>