1

我有一个看起来像这样的中继器控制器:

<asp:Repeater ID="Postrepeater" runat="server" DataSourceID="datasource" >
<h2>
    <%#Eval("posttitle") %>
</h2>
<p>
    <%#Eval("posttext") %>
</p>
<asp:Button ID="DeleteLinkButton" runat="server" CommandName="Delete" Text="Delete post" />
</asp:Repeater>

数据源:

<asp:ObjectDataSource ID="datasource" TypeName="Service" SelectMethod="GetPosts" DataObjectTypeName="Post" runat="server" DeleteMethod="DeletePost" />

在 Service.cs 中

public List<Posts> GetPosts()
        {
            DALposts dal = new DALposts();
            return dal.GetPosts();
        }

public void DeletePost(Posts post)
    {
        DALPost.DeletePost(post.PostId);
    }

真正奇怪的是,SelectMethod、GetPosts 是一种魅力——就像它应该的那样。但是当我尝试删除帖子时,DeleteMethod 不会调用任何方法 - 页面只是重新加载并且没有任何反应。我试图调试代码,但是 CommandName="Delete" 根本没有调用任何东西,而且我没有收到任何错误......有什么想法吗?

认为我发布了足够的代码,但如果您认为您需要更多代码 - 请告诉我。

更新: 经过大量阅读和一些帮助后,我得出结论,除非我编写更多代码,否则无法使用转发器完成此操作 - 所以我改为使用 FormView。奇迹般有效

4

2 回答 2

1

要通过设置完成某事,CommandName你必须实施OnItemCommand 检查这个

于 2011-06-19T13:05:14.147 回答
1

我认为您在此处使用中继器描述的方式是不可能的。您必须改用网格视图。

或者,您可以在中继器上使用 OnItemCommand 事件,检查 Delete 参数,然后调用您的删除方法。

于 2011-06-19T13:57:59.683 回答