2012-03-15 81 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>