CommandName = "Удалить" не вызывает метод - PullRequest
1 голос
/ 19 июня 2011

У меня есть контроллер повторителя, который выглядит примерно так:

<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.Работает как шарм

Ответы [ 2 ]

1 голос
/ 19 июня 2011

Я не думаю, что это будет возможно, как вы описали это здесь с ретранслятором.Вместо этого вы должны использовать gridview.

Или вы можете использовать событие OnItemCommand на ретрансляторе, проверить аргумент Delete и затем вызвать свой метод delete.

1 голос
/ 19 июня 2011

Чтобы что-то сделать, установив CommandName, вам нужно реализовать OnItemCommand , отметьте

...