【发布时间】:2011-06-19 22:34:01
【问题描述】:
我有一个中继器控制器,看起来像这样:
<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。像魅力一样工作
【问题讨论】:
-
我认为您需要分配
<asp:Button>的OnClick才能让它做某事。 -
不 - 您应该能够使用“commandName=”来告诉数据源使用什么方法。我以前做过,只是不明白为什么它现在不起作用。
标签: c# asp.net asp.net-controls