2011-10-21 2 views
0

J'ai un div comme comme:Bouton onClick ne fonctionne pas si elle est à l'intérieur de DIV dans ASP.NET

<div id="specific"> 
<table cellpadding="2" border="0"> 
<tr><td>Choose category</td><td><select id="list_categories" runat="server"></select></td><td><asp:RequiredFieldValidator ControlToValidate="list_categories" runat="server" Display="Static" ErrorMessage="Select category" ID="verify_category"></asp:RequiredFieldValidator></td></tr> 
<tr><td>Link name : </td><td><asp:TextBox ID="link_name" runat="server"></asp:TextBox></td><td><asp:RequiredFieldValidator ControlToValidate="link_name" runat="server" Display="Static" ErrorMessage="Provide a name for link" ID="verify_link_name"></asp:RequiredFieldValidator></td></tr> 
<tr><td>Link url : </td><td><asp:TextBox ID="link_url" runat="server"></asp:TextBox></td><td><asp:RegularExpressionValidator ID="verify_url" runat="server" ControlToValidate="link_url" Display="Static" ErrorMessage="Invalid link. Must be as http://www.stabiplan.com" ValidationExpression="^http\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$"></asp:RegularExpressionValidator></td></tr> 
<tr><td>Link description</td><td><asp:TextBox ID="link_descr" runat="server"></asp:TextBox></td><td><asp:RequiredFieldValidator ControlToValidate="link_descr" runat="server" ID="verify_descr" Display="Static" ErrorMessage="Provide a link description"></asp:RequiredFieldValidator></td></tr> 
<tr><td colspan="2"><center><asp:Button runat="server" ID="add_link_process" Text="Add link" OnClick="add_link_function" /></center></td></tr> 
</table> 
</div> 

et la fonction de CodeBehind.cs

protected void add_link_function(object sender, EventArgs e) { 
     BusinessLayerArcht layer = LoadDataFromBL(); 
     if (layer.add_link(link_name.Text, link_url.Text, link_descr.Text, list_categories.Value.ToString())) { 
      messages.Text = "Link added successfully"; 
      LoadTree(tree); 
     } else { 
      messages.Text = "Link could not be added !"; 
     } 
     } 

Lorsque je clique sur sur le bouton, rien ne se passe. Pourquoi ?

Si je supprime le bloc DIV et que le code est à l'intérieur du <table>, l'événement de clic sur le bouton fonctionne.

Merci

+0

Y a-t-il du javascript/css associé à ce 'div # specific'? – Curt

Répondre

5

Je doute fortement qu'il n'a rien à voir avec l'élément div. Généralement, lorsqu'un bouton ne fait rien, c'est parce que la validation empêche la publication. Pour tester cela, définissez la propriété CausesValidation sur false sur le bouton et réessayez.

1

Avez-vous essayé d'ajouter un point d'arrêt à la méthode add_link_function pour vérifier si son déclenchement du tout?


En ce qui concerne votre problème de validation, vous pouvez ajouter à vos ValidationGroup contrôles de validation ainsi que votre Button. De cette façon, seuls les contrôles de validation avec un nom de groupe correspondant comme bouton déclenché seront activés.

+0

Oui j'ai essayé d'ajouter un point d'arrêt et la fonction OnClick n'a pas pu être déclenchée ... Pourquoi? Comment je l'ai dit, si je laisse le code à l'intérieur de la table, tout est OK ... Est-ce quelque chose avec DIV –

+0

merci pour le tour avec ValidationGroup. Le premier problème existe toujours –

0

C'est est une estimation totale, mais il est possible que le « div » est assis sur le dessus de votre table et empêcher le clic d'obtenir sur le bouton, vous pouvez essayer un code Javascript comme ça -

function getActivatedObject(e) { 
    var obj; 
    if (!e) { 
    obj = window.event.srcElement; 
    } else if (e.srcElement) { 
    obj = e.srcElement; 
    } else { 
    obj = e.target; 
    } 
    return obj; 
} 

function addEventHandler(obj, eventName, handler) { 
    if (document.attachEvent) { 
    obj.attachEvent("on" + eventName, handler); 
    } else if (document.addEventListener) { 
    obj.addEventListener(eventName, handler, false); 
    } 
} 

pour déterminer quel élément recevait l'événement click.

code de - How do I know which element was clicked?

1

peut vous devez changer la propriété du bouton « UseSubmitBehavior » false

+0

Cela fonctionne pour moi. Ty –

0

Dans les propriétés de ce bouton, ensemble OnClientClick comme le nom de la fonction que vous appelez le « onclick ». Ça a marché pour moi.

Questions connexes