使用ASP.NET Repeater和Entity Framework删除记录

时间:2012-03-15 17:43:48

标签: asp.net entity-framework entity-framework-4 repeater

我有一个名为PendingPartners的实体,它具有Residents实体的导航属性。我正在从这些对象返回信息,如下:

 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. 更改文本绑定的方式 - 因为转发器现在有两列。
  4. 我知道如何更新EntitySQL,但我总是对此获取此信息感到困惑。进入转发器...帮助?

1 个答案:

答案 0 :(得分:1)

我认为你需要在转发器中使用bind函数

Button的Text使用“person_name”,命令参数使用“id”,命令名称为“delete”。

像这样:

 <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>