J'ai un problème avec l'événement de bouton dans le contrôle utilisateur Webévénement dans le contrôle de l'utilisateur
Tout d'abord j'ai un ASPX comme ceci:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AddTest.aspx.cs" Inherits="AddTest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="js/jquery-1.4.2.min.js" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div id="divContent" runat="server">
</div>
</form>
</body>
</html>
Comme vous le voyez, j'ai un ScriptManager à voir avec ASP.NET AJAX, un div avec l'ID divContent pour charger des contrôles, puis dans le code derrière:
protected void Page_Load(object sender, EventArgs e)
{
divContent.Controls.Add(LoadControl("~/thitai/addtest.ascx"));
}
-je ajouter à addtest.ascx divContent comme vous le voyez, ce qui est le code de addtest.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="addtest.ascx.cs" Inherits="thitai.addtest" %>
<asp:UpdatePanel ID="updatePanel" runat="server" ClientIDMode="Static">
<ContentTemplate>
<input type="button" value="Load text" onclick="updPanel('text');return false;" />
<input type="button" value="Load image" onclick="updPanel('image');return false;" />
<asp:HiddenField ID="hftype" runat="server" ClientIDMode="Static" />
<div>
<asp:PlaceHolder ID="plhControl" runat="server"></asp:PlaceHolder>
</div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
<script type="text/javascript">
function updPanel(type) {
$("#hftype").val(type);
__doPostBack("updatePanel", "");
}
</script>
Chaque fois que je clique sur le bouton Charger le texte, je change la valeur de hfType (champ caché) alors ne postback au serveur en utilisant UpdatePanel, alors ce code est derrière
protected override void OnPreRender(EventArgs e)
{
string type = hftype.Value;
switch (type)
{
case "text":
plhControl.Controls.Add(LoadControl("~/thitai/test/text.ascx"));
break;
case "image":
plhControl.Controls.Add(LoadControl("~/thitai/test/image.ascx"));
break;
default:
plhControl.Controls.Add(LoadControl("~/thitai/test/text.ascx"));
break;
}
base.OnPreRender(e);
}
Ce code de text.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="text.ascx.cs" Inherits="thitai.test.text" %>
<%@ Register Assembly="Support" Namespace="Support.CustomEditor" TagPrefix="Editor" %>
<Editor:CustomEditor ID="edNoidung" runat="server" NoScript="True" Content=""
Height="500" ActiveMode="Design" NoUnicode="True" InitialCleanUp="False" />
<div>
<asp:Button ID="Button1" runat="server" Text="Show HTML"
onclick="Button1_Click" />
</div>
<div id="showHtml" runat="server"></div>
et le code derrière des text.ascx
protected void Button1_Click(object sender, EventArgs e)
{
showHtml.InnerHtml = edNoidung.Content;
}
Le problème est: quand je clique sur le bouton 1, la page fait une publication en utilisant AJAX mais l'événement Button1_Click NE FAIT PAS DE FEU!
Une idée pour cela?
Toujours ne fonctionne pas, veuillez prendre note que j'utilise UpdatePanel à la publication !!! –
Je crois toujours qu'il est lié à l'ordre de l'exécution de l'événement. Mais vous pouvez essayer une autre manière de décider si le bouton a été cliqué - voir ma modification dans la réponse. – VinayC
Vous avez raison, votre code fonctionne parfaitement mais l'événement Button1_Click ne fonctionne toujours pas! Et encore une chose, comme vous le voyez dans mon texte.ascx, j'ai un éditeur, vous pouvez le changer en zone de texte, quand je le remplis avec du texte, puis le poster sur le serveur, je ne peux pas l'obtenir !!! :( –