2016-06-13 11 views
2

Я пытался понять, что происходит, и я искал в Интернете безрезультатно.Как получить доступ к кнопке внутри вложенного ретранслятора в ASP.net?

Как получить доступ к моим кнопкам, находящимся внутри вложенного ретранслятора? Я провел так много часов, исследуя/экспериментируя, и я не понимаю, что происходит.

HTML Markup:

<asp:Repeater runat="server" ID="repQuestionTopics"> 
    .... 
    <asp:Repeater ID="repQA" runat="server"> 
     .... 
     <strong>Was this article helpful?</strong>&nbsp; 
     <button class="button tiny secondary radius" runat="server" 
       CommandName="voteYes" id="btnVoteHelpfulYes">Yes</button> 
     <button class="button tiny secondary radius" runat="server" 
       CommandName="voteNo" ID="btnVoteHelpfulNo">No</button> 
    </asp:Repeater> 
</asp:Repeater> 

Code-Behind:

//Handles repQuestionTopics.ItemCommand 
Public Sub repTopics_ItemCommand(Sender As Object, e As RepeaterCommandEventArgs) 
    If e.CommandName = "voteYes" Then 
     .... 
    End If 
End Sub 

Как получить доступ к repQA? По какой-то причине мой код не позволит мне написать функцию Ручки repQA.ItemCommand - почему? Я попытался непосредственно ввести функцию на стороне осины, используя что-то вроде (добавление OnClick):

<button class="button tiny secondary radius" runat="server" OnClick="repTopics_ItemCommand" 
     CommandName="voteYes" id="btnVoteHelpfulYes">Yes</button> 

Когда кнопка voteYes нажата я хочу, чтобы иметь возможность обращаться к базе данных и обновлять счетчик, так что я может отслеживать, сколько голосов и голосов ниже для ответа на этот вопрос.

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

ответ

0

HTML Markup: Вы должны добавить OnItemCommand событие к своему внутреннему Repeater repAQ:

<asp:Repeater ID="repQA" runat="server" OnItemCommand="repQA_ItemCommand"> 

Code-Behind:

VB.Net:

Public Sub repQA_ItemCommand(Sender As Object, e As RepeaterCommandEventArgs) 
    // check for right name of command 
    If e.CommandName = "voteYes" Then 
     .... 
    End If 
End Sub 

ASP.Net:

protected void repQA_ItemCommand(object source, RepeaterCommandEventArgs e) 
{ 
    // check for right name of command 
    if(e.CommandName == "voteYes") 
    { 
     .... 
    } 
}