Установить updatepanelanimationextender TargetControId в коде позади - PullRequest
1 голос
/ 30 января 2011

Внутри usercontrol У меня есть updatepanelanimationextender, когда я добавляю этот элемент управления на веб-страницу, я хочу передать идентификатор updatepanel в качестве параметра для свойства элемента управления.

Usercontrol:

public partial class Controls_UpdateProgress : System.Web.UI.UserControl
{ 
    public string UpdatePanelID { get; set; }
    protected void Page_Load(object sender, EventArgs e)
    {     
        if (!IsPostBack)
        {
            UpdatePanelAnimationExtender1.TargetControlID = UpdatePanelID;              
        }

    }
}

<cc1:updatepanelanimationextender id="UpdatePanelAnimationExtender1" runat="server" >
            <Animations>
               <OnUpdating>
                   <Parallel duration="0" >        
                       <ScriptAction Script="onUpdating();" />  
                   </Parallel>
               </OnUpdating>
                 <OnUpdated>
                  <Parallel duration="0">             
                     <ScriptAction  Script="onUpdated();"  /> 
                  </Parallel> 
               </OnUpdated>
            </Animations>
        </cc1:updatepanelanimationextender>

WebPage: UpdatePanel1 isИдентификатор панели обновления.

<uc1:UpdateProgress ID="UpdateProgress1" runat="server" UpdatePanelID="UpdatePanel1"    />

Я получаю сообщение об ошибке:

TargetControlID 'UpdatePanelAnimationExtender1' недопустим.Значение не может быть нулевым или пустым.

Ответы [ 2 ]

0 голосов
/ 30 января 2011

Расширители управления AJAX не сохраняют свои TargetControlID в ViewState (я зарегистрировал System.Web.Extensions 3.5 с помощью Reflector, и это свойство только получает / устанавливает приватный член). Таким образом, сохраненное вами значение теряется при обратной передаче.

Вы должны будете хранить значение в каждом запросе:

protected void Page_Load(object sender, EventArgs e)
{     
    UpdatePanelAnimationExtender1.TargetControlID = UpdatePanelID;              
}
0 голосов
/ 30 января 2011

Чтобы избежать этого исключения, вы должны сначала убедиться, что UpdatePanelID не равен нулю ...

if (!IsPostBack)         { 
     if (UpdatePanelID != Null) { 
            UpdatePanelAnimationExtender1.TargetControlID = UpdatePanelID;
     }
}

Если вы хотите установить свойство UpdatePanelID из родительской страницы программным способом, вам нужно будет привести UpdateProgress1 как экземпляр Controls_UpdateProgress. Чтобы сделать это, сделайте что-то вроде этого ...

((Controls_UpdateProgress)UpdateProgress1).UpdatePanelID = "ThisIsTheIdYouWishToSet";
...