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

ここでリピーターを使って説明した方法が可能になるとは思いません。代わりにグリッドビューを使用する必要があります。

または、リピーターでOnItemCommandイベントを使用し、Delete引数を確認してから、deleteメソッドを呼び出すことができます。

于 2011-06-19T13:57:59.683 に答える
1

CommandNameuを設定して何かを行うには、OnItemCommand これをチェックして実装する必要があります

于 2011-06-19T13:05:14.147 に答える