2009-11-26 6 views
0

J'ai besoin d'accéder à un contrôle d'étiquette dans une liste lorsque j'ai cliqué sur un bouton (c'est sur la même ligne) ...Comment puis-je accéder à un contrôle dans ListView une fois qu'un bouton a été cliqué?

Est-ce que quelqu'un sait comment faire cela s'il vous plaît? :(

Voir ci-dessous pour plus d'un aperçu ...

ASPX Page:

<asp:ListView ID="ListView1" runat="server" DataSourceID="DataSource"> 
<LayoutTemplate>//Etc </LayoutTemplate> 
<ItemTemplate> 
<asp:Label ID="lblDone" runat="server" Visible="false">Your vote has been counted</asp:Label> 
<asp:Button ID="voteButton" runat="server" Text="Vote" CommandArgument='<%#Eval("id") %>' OnClick="voteOnThis" /> 
</ItemTemplate> 
code

Derrière:

protected void voteOnThis(object sender, EventArgs e) 
{ 
    Button myButton = (Button)sender; 
    Voting.vote(int.Parse(myButton.CommandArgument)); 
    // Here i would like to access the 'label' lblDone and make this Visible  
} 

Répondre

0

Vous devez accrocher dans la liaison de la ligne de listview et ajouter les informations que vous voulez avoir lorsque vous cliquez dessus. En utilisant cela, vous pouvez ajouter un attribut au bouton que vous lisez en cliquant, par exemple ...

Si vous avez posté du code, je pourrais probablement vous aider.

1

Dans ce cas simple, j'envisager d'utiliser Javascript (JQuery)

<asp:ListView ID="ListView1" runat="server" DataSourceID="DataSource"> 
<LayoutTemplate>//Etc </LayoutTemplate> 
<ItemTemplate> 
<asp:Label ID="lblDone" runat="server" style="visibility:hidden">Your vote has been counted</asp:Label> 
<asp:Button OnClientClick="showLblDone()" ID="voteButton" runat="server" Text="Vote" CommandArgument='<%#Eval("id") %>' OnClick="voteOnThis" /> 
</ItemTemplate> 

maintenant, définir dans une balise de script la fonction showLblDone:

<script> 
function showLblDone(){ 
$(this).siblings('span').show();} 
</script> 

Vous pouvez également appeler cette fonction avec un paramètre si vous voulez afficher/masquer à chaque clic, ou vous pouvez utiliser .toggle() au lieu de .show().

Dans ce cas, vous devez ajouter un div (ou un Panel) dans ItemTemplate.

Questions connexes