25. maj 2004 - 10:10Der er
6 kommentarer og 1 løsning
2 custom controls på samme side
Hej Eksperter!
Jeg har to custom controls, der skal vises på én og samme side. Men de skal ikke vises samtidig. Begge kontroller implementerer IPostBackDataHandler, så der kan udføres postback. Da de ikke skal vises samtidig, styrer jeg det med at overstyre Visible property'en fra kontrol. Mit problem er, at den ene kontrol (den der bliver erklæret først) fanger alle postback events (også dem fra den anden kontrol!), selvom kontrollen ikke bliver vist på siden.
Nu vil jeg så gerne vide, om jeg på en eller anden måde kan disable den kontrol, der ikke skal vises, så hver kontrol kun fanger events fra sin egen "child-kontrols".
Prøv at lave en disabled-property på din controls: I aspx-siden, hvor de anvendes, starter du så med at sætte dem aktiv/ikke aktiv i Page_load event'en. Denne event skulle gerne køre før control'ernes load-events. Du bliver også nød til at tage højde for den nye disabled-property i selve control'en: Når den er disabled, skal der ikke udløses nogen events.
Det har jeg sådan set gjort. Mit problem er, at jeg i mine kontroller ikke kan finde ud af, hvordan jeg sørger for, at der ikke bliver udløst nogen events når min property Enabled=False
Hmm, sad lige og testede med en af Microsofts samples. Ser ikke ud til INamingContainer er nødvendig alligevel. Den her custom control fungerer med flere instanser af den må din aspx side. Prøv at bruge skelettet fra den.
//----------------------------------------------------------------------- // This file is part of the Microsoft .NET SDK Code Samples. // // Copyright (C) Microsoft Corporation. All rights reserved. // //This source code is intended only as a supplement to Microsoft //Development Tools and/or on-line documentation. See these other //materials for detailed information regarding Microsoft code samples. // //THIS CODE AND INFORMATION ARE PROVIDED AS IS WITHOUT WARRANTY OF ANY //KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE //IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A //PARTICULAR PURPOSE. //-----------------------------------------------------------------------
using System; using System.Web; using System.Web.UI; using System.Collections; using System.Collections.Specialized; using System.Web.UI.WebControls;
namespace NonCompositionSampleControls {
public class NonComposition2 : Control, IPostBackDataHandler, IPostBackEventHandler {
private int _value = 0;
public int Value {
get { return _value; } set { _value = value; } }
public bool LoadPostData(String postDataKey, NameValueCollection values) {
// Part of the IPostBackDataHandler contract. Invoked if we ever returned true from the // LoadPostData method (indicates that we want a change notification raised). Since we // always return false, this method is just a no-op. }
public void RaisePostBackEvent(String eventArgument) {
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.