开发者

Using Ajax in 2 nested user controls

Here's the problem:

I have a control (A) that I register/load into another control (B). then I register control (B) into a normal .aspx page

I put a 'Script Manager' in this page and I use ajax 'Update Panel' in both controls but only the main components of the control (B) works (excluding the control (A) which I registered into control (B)) .. so basically the ajax part works for the component that's loaded into a page. if it's loaded into another control it won't work!

I wanted to make sure that it's not a silly mistake in my code so I copied the code of the control that's not working and added it to a normal page and it worked!

so what do you think the problem is or can I do about it !?

EDIT Some Code

Control (B) :

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Itinerary.ascx.cs" Inherits="OTV.controls.Itinerary.ItineraryControl" %>
<p>
    Add new itinerary:</p>
<p>
    <br />
</p>

<div id="newItinerary_div" runat="server">
    <p>
        Title: 
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

        Description:
        <asp:TextBox ID="TextBox2" runat="server" TextMode="MultiLine"></asp:TextBox>

        Visible:
        <asp:CheckBox ID="CheckBox1" runat="server" />

    <div id="itineraryDays_div" runat="server">
    <h4>Itinerary days:</h4>

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
        <asp:PlaceHolder ID="DaysHolder" runat="server"></asp:PlaceHolder>
            </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="addMoreDay_btn" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>


    <asp:Button ID="addMoreDay_btn" runat="server" Text="Add one more day" 
        onclick="addMoreDay_btn_Click" />
&nbsp; This button dynamically create itineraryDay controller to the div

    </div>

</div>
</div>

Control (B) - Code Behind File:

public partial class ItineraryControl: System.Web.UI.UserControl
    {

        static int DaysCount = 1;
        static List<Control> _daysList;


        protected void addMoreDay_btn_Click(object sender, EventArgs e)
        {

        }

        public static Control GetPostBackControl(Page thePage)
        {
            Control myControl = null;
            string ctrlName = thePage.Request.Params.Get("__EVENTTARGET");
            if (((ctrlName != null) & (ctrlName != string.Empty)))
            {
                myControl = thePage.FindControl(ctrlName);
            }
            else
            {
                foreach (string Item in thePage.Request.Form)
                {
                    Control c = thePage.FindControl(Item);
                    if (((c) is System.Web.UI.WebControls.Button))
                    {
                        myControl = c;
                    }
                }

            }
            return myControl;
        }


        protected void Page_Init(object sender, EventArgs e)
        {
            Control myControl = GetPostBackControl(this.Page);

            if ((myControl != null))
            {
                if ((myControl.ClientID.ToString() == "addMoreDay_btn"))
                {
                    DaysCount = DaysCount + 1;
                }
            }

            _daysList = new List<Control>();

            for (int i = 1; i <= DaysCount; i++)
            {
                Control OneMoreDay = LoadControl("~/controls/Itinerary/ItineraryDayAdd.ascx");
                OneMoreDay.ID = "dayNo" + i;
                (OneMoreDay.FindControl("DayNum_TxtBx") as TextBox).Text = i.ToString();
                DaysHolder.Controls.Add(OneMoreDay);
                _daysList.Add(OneMoreDay);
            }
       开发者_如何学Go }

        }

    }

Control (A) :

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ItineraryDayAdd.ascx.cs" Inherits="OnlineTravelAgency1.controls.Itinerary.ItineraryDayAdd" %>
<p>
        Day#:
        <asp:TextBox ID="DayNum_TxtBx" runat="server"></asp:TextBox>
</p>
<p>
        Title:
        <asp:TextBox ID="Title_TxtBx" runat="server"></asp:TextBox>
</p>
    <p>
        Day:&nbsp;
        <asp:DropDownList ID="Days_DrpDwnLst" runat="server">
            <asp:ListItem Value="0">Saturday</asp:ListItem>
            <asp:ListItem Value="1">Sunday</asp:ListItem>
            <asp:ListItem Value="2">Monday</asp:ListItem>
            <asp:ListItem Value="3">Tuesday</asp:ListItem>
            <asp:ListItem Value="4">Wednesday</asp:ListItem>
            <asp:ListItem Value="5">Thursday</asp:ListItem>
            <asp:ListItem Value="6">Friday</asp:ListItem>
        </asp:DropDownList>
</p>
    <p>
        Description: 
        <asp:TextBox ID="TextBox2" runat="server" TextMode="MultiLine"></asp:TextBox>
</p>

...This is my whole code! I'm really stuck and I didn't want to overwhelm you with my code but I can't help you enough to understand my problem

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜