dynamic loaded datalist ascx event delegate not firing in parent f

Discussion in 'ASP .Net' started by cindy, Sep 9, 2008.

  1. cindy

    cindy Guest

    I have am dynamically loading a web user control based on the click of a tab
    strip
    I load the default control for the first tab in the page load event after
    checking page is not postback. After that the controls are loaded/unloaded
    based on the SelectionChanged event for the tab strip and again in Page load
    because with a dynamic load viewstate has to be reloaded. I have a datalist
    in the user control and I am trying to create the delegate so the parent can
    handle the click of the edit button in the user control. Honestly I am not
    very good at event delegation the code complies but I never get the command
    to execute on the parent

    in the child control site.ascx I set up the datalist public event with
    code below

    public partial class Site : System.Web.UI.UserControl
    {
    public delegate void myItemCommand(object source,
    DataListCommandEventArgs e);
    public event myItemCommand dlSiteItemCommand;

    override protected void OnInit(EventArgs e)
    {
    InitializeComponent();
    base.OnInit(e);
    }
    private void InitializeComponent()
    { }


    protected void dlSite_ItemCommand(object source,
    DataListCommandEventArgs e)
    {
    if (dlSiteItemCommand != null)
    dlSiteItemCommand(source, e);
    }

    protected void Page_Load(object sender, EventArgs e)
    { //get the data and fill the datalist }

    in the parent (Detail) I try to bind to the event in the Site.ascx When
    the page loads in the parent the procedure LoadUserControl()
    is called and in it after I dynamically load the correct control, I caste
    the generic control to an instance of Site so I can see the public event I
    created. Thats where I have got it wrong I am SOOOOO confused. The binding
    does not work when I click the edit button in the child datalist I never
    break into the event that is bound on the parent Below is parent code.
    Please I not this is too long an explanation but I have been trying and
    reading a long time.

    Cindy

    public partial class Detail : System.Web.UI.Page
    {
    private string LastLoadedControl
    {
    get
    {
    return ViewState["LastLoaded"] as string;
    }
    set
    {
    ViewState["LastLoaded"] = value;
    }
    }
    private void LoadUserControl()
    {
    string controlPath = LastLoadedControl;

    if (!string.IsNullOrEmpty(controlPath))
    {
    PlaceHolder1.Controls.Clear();
    UserControl uc = (UserControl)LoadControl(controlPath);
    if (controlPath == "Site.ascx")
    {
    Site ucSite = (Site)uc;
    ucSite.dlSiteItemCommand += new
    Site.myItemCommand(ucSite_dlSiteItemCommand);
    }
    PlaceHolder1.Controls.Add(uc);
    }
    }

    void ucSite_dlSiteItemCommand(object source, DataListCommandEventArgs e)
    {
    (source as DataList).EditItemIndex = e.Item.ItemIndex;
    (source as DataList).DataSource = dsTunnel;
    (source as DataList).DataBind();
    }

    #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
    InitializeComponent();
    base.OnInit(e);
    }
    private void InitializeComponent()
    {}

    protected void Page_Load(object sender, EventArgs e)
    {
    if(!(Page.IsPostBack))
    {
    string controlPath = null;
    controlPath = "Site.ascx";
    LastLoadedControl = controlPath;
    LoadUserControl();
    }
    LoadUserControl();
    }
    private void ts_SelectionChanged(object sender,
    JQD.TabStrip.SelectionChangedEventArgs e)
    {
    int TabPos = e.TabPosition;
    ActiveTab = TabPos;
    string controlPath = string.Empty;

    switch (TabPos)
    {
    case 0:
    controlPath = "Site.ascx";
    LastLoadedControl = controlPath;
    LoadUserControl();
    break;

    case 1:
    break;
    }
    --
    cindy
     
    cindy, Sep 9, 2008
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    1
    Views:
    1,716
    Evan Freeman
    Sep 12, 2008
  2. Joe
    Replies:
    1
    Views:
    386
    Jeffrey Tan[MSFT]
    Feb 16, 2004
  3. cindy
    Replies:
    0
    Views:
    293
    cindy
    Sep 8, 2008
  4. Bill S.
    Replies:
    2
    Views:
    227
    Bill S.
    May 8, 2004
  5. pbd22
    Replies:
    2
    Views:
    310
Loading...

Share This Page