在代码隐藏处设置 updatepanelanimationextender TargetControId

发布于 2024-10-14 18:04:35 字数 1440 浏览 3 评论 0原文

在用户控件内部,我有 updatepanelanimationextender,当我将此控件添加到网页时,我想将 updatepanel 的 Id 作为参数传递给控件的属性。

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 是 updatepanel 的 id。

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

我收到错误:

目标控件ID “UpdatePanelAnimationExtender1”不是 有效的。该值不能为空或 空。

Inside usercontrol I have updatepanelanimationextender, when I add this control to a webpage I want to pass updatepanel's Id as parameter to control's property.

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 an id of the updatepanel.

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

I get error:

The TargetControlID of
'UpdatePanelAnimationExtender1' is not
valid. The value cannot be null or
empty.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

迷乱花海 2024-10-21 18:04:35

AJAX 控件扩展程序不会将其 TargetControlID 存储在 ViewState 中(我使用 Reflector 在 System.Web.Extensions 3.5 中签入,该属性仅获取/设置私人成员)。因此,您存储的值在回发时会丢失。

您必须在每个请求中存储该值:

protected void Page_Load(object sender, EventArgs e)
{     
    UpdatePanelAnimationExtender1.TargetControlID = UpdatePanelID;              
}

The AJAX control extenders do not store their TargetControlID in the ViewState (I checked in System.Web.Extensions 3.5 with Reflector and that property only gets/sets a private member). Thus, the value you stored is lost on postback.

You'll have to store the value in every request:

protected void Page_Load(object sender, EventArgs e)
{     
    UpdatePanelAnimationExtender1.TargetControlID = UpdatePanelID;              
}
夏见 2024-10-21 18:04:35

为了避免该异常,您应该首先确保 UpdatePanelID 不为 null...

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

如果您希望以编程方式从父页面设置 UpdatePanelID 的属性,则需要将 UpdateProgress1 转换为 Controls_UpdateProgress 实例。为此,请执行以下操作...

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

To avoid that exception, you should first make sure that UpdatePanelID is not null...

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

If you desire to set the property of the UpdatePanelID from the parent page programmatically you will need to cast UpdateProgress1 as a Controls_UpdateProgress instance. To do that, do something like this...

((Controls_UpdateProgress)UpdateProgress1).UpdatePanelID = "ThisIsTheIdYouWishToSet";
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文