hej, jag har en composite control som består av en textbox och en image button. Ah, den ska ärva av CompositeControl då funkar det! En liten bisak som inte har med din fråga att göra är att du inte b(eh)ö(ve)r anropa EnsureChildControls från CreateChildControls (även om det inte kommer hända något) eftersom den metoden anropar CreateChildControls om den ännu inte är körd (dvs det fyller ingen funktion).Composite custom control, ajax (Update panel) och autopostback
När man skriver nått i textboxen eller klickar på imagebuttonen ska postback triggar.
Problemet är bara att det är en vanlig postback som triggas (Ej ajax)...
Vad kan felet vara?
edit: glömde nämna det att stänger jag av autopostback triggas en ajax postback istället..
men autopostback måste vara på...
public class NumericUpDown : WebControl, ITextControl
{
private TextBox numericValue = new TextBox();
private ImageButton arrows = new ImageButton();
public event EventHandler NumericValueChanged;
protected override void CreateChildControls()
{
EnsureChildControls();
numericValue.AutoPostBack = true;
numericValue.TextChanged += new EventHandler(OnNumericValueChanged);
Controls.Add(numericValue);
arrows.AlternateText = "Arrows image";
arrows.Click += new ImageClickEventHandler(ArrowsClick);
Controls.Add(arrows);
base.CreateChildControls();
}
private void ArrowsClick(object sender, ImageClickEventArgs e)
{
if (e.Y <= 8)
SetValue(1);
else
SetValue(-1);
}
protected void OnNumericValueChanged(object sender, EventArgs e)
{
SetValue(0);
}
private void SetValue(decimal increment)
{
EnsureChildControls();
decimal value = 0;
decimal.TryParse(numericValue.Text, out value);
value += increment;
numericValue.Text = value.ToString();
if(NumericValueChanged != null)
NumericValueChanged(this, new EventArgs());
}
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
}
[Category("Appearance"), DefaultValue("0")]
public string Text
{
get
{
EnsureChildControls();
return numericValue.Text;
}
set
{
EnsureChildControls();
numericValue.Text = value;
}
}
[Category("Appearance"), DefaultValue("~/Images/updownarrow.gif")]
public string ArrowsImage
{
get
{
EnsureChildControls();
return arrows.ImageUrl;
}
set
{
EnsureChildControls();
arrows.ImageUrl = value;
}
}
}Sv: Composite custom control, ajax (Update panel) och autopostback
Guiden jag hittade ärvde av webcontrol...Sv: Composite custom control, ajax (Update panel) och autopostback