LinkButton événement de la commande semble ne pas être de tir

J'ai créé un simple contrôle de l'utilisateur à l'aide de l'AJAX Control Toolkit Accordéon, LinkButton, et de la zone de texte comme ceci:

TestControl.ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="TestControl.ascx.cs" Inherits="TestControl" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<cc1:Accordion ID="Accordion1" runat="server">
<Panes></Panes>
<HeaderTemplate>
<div><%# Container.DataItem %></div>
</HeaderTemplate>
<ContentTemplate>
<div>
<asp:TextBox ID="textBox" Text='<%# Container.DataItem %>' runat="server"></asp:TextBox>
<asp:LinkButton Text="Update" CommandName="Update" CommandArgument='<%# Container.DataItem %>' OnCommand="LinkButton_Command" runat="server"></asp:LinkButton>
</div>
</ContentTemplate>
</cc1:Accordion>

Et TestControl.ascx.cx:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class TestControl : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
Accordion1.DataSource = new string[] { "one", "two", "three" };
Accordion1.DataBind();
}
protected void LinkButton_Command(object sender, CommandEventArgs e)
{
if (e.CommandName == "Update")
{
TextBox value = ((LinkButton)sender).Parent.FindControl("textBox") as TextBox;
((string[])Accordion1.DataSource)[Accordion1.SelectedIndex] = value.Text;
Accordion1.DataBind();
}
}
}

La LinkButton_Command gestionnaire d'événement n'est pas le feu à tous sur le premier clic, mais sur la seconde. Est-il un problème avec le cycle de vie les contrôles sont en cours, que les causes des événements à ne pas raccordé correctement?

Mise à jour: je suis en ajoutant le contrôle statique:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register src="TestControl.ascx" tagname="TestControl" tagprefix="uc2" %>
<!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>
</head>
<body>
<form id="form1" runat="server">    
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div border="1">
<uc2:TestControl ID="TestControl1" runat="server" />
</div>
</form>
</body>
</html>
  • Êtes-vous d'ajouter votre utilisateur contrôle dynamique de la page?
  • Je ne le pense pas - c'est juste un contrôle utilisateur web dans un projet de site web, et je suis en cours d'exécution sous le débogueur, et j'ai laissé tomber la commande directement sur une page.
  • De doute, c'est elle, mais vous avez besoin d'un ID sur le bouton de lien?
  • Définition d'un ID ne l'aide pas.
  • Quelle Preuve avez-vous que c'est de ne pas tirer sur le premier clic (ça va paraître stupide, mais avez-vous essayé une réponse.write() avant le "if (e.CommandName == "Mise À Jour")"
  • Check this out aussi bien.. surtout si votre Ajax dll est vieux... codeplex.com/AjaxControlToolkit/WorkItem/...

InformationsquelleAutor Ben Collins | 2009-04-09