开始学习UpdatePanel控件,好像是个非常常用的控件。

先看一下基本的结构:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <!---->
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger />
        <asp:PostBackTrigger />
    </Triggers>
</asp:UpdatePanel>

该控件的强大之处在于不用编写任何客户端脚本,只要在一个页面上添加几个UpdatePanel控件和一个ScriptManager控件就可以自动实现局部更新。
ContenteTemplate标签用来定义UpdatePanel的内容,在它里面可以放任何ASP.NET元素。如果你想要使用编程的手法来控制UpdatePanel中的内容,就需要使用ContenteTemplateContainer
ContenteTemplate太简单了,只需要像平时使用控件一样往里堆就可以了,控件的事件也没有什么特殊的,但是如果要使用编程的手法去设置UpdatePanel中的内容,需要创建一个UpdatePanel,并且添加控件到ContentTemplateContainer,而不能直接添加控件到ContentTemplate,如果想直接设置ContentTemplate,则需要编写一个自定义的Template,并去实现位于System.Web.UI命名空间下的接口ITemplate

看一个使用ContentTemplateContainer的例子:
protected void Page_Load(object sender, EventArgs e)
    {
        UpdatePanel up1 = new UpdatePanel();
        up1.ID = "UpdatePanel1";
        up1.UpdateMode = UpdatePanelUpdateMode.Conditional;
        Button button1 = new Button();
        button1.ID = "Button1";
        button1.Text = "Submit";
        button1.Click += new EventHandler(Button_Click);
        Label label1 = new Label();
        label1.ID = "Label1";
        label1.Text = "A full page postback occurred.";
        up1.ContentTemplateContainer.Controls.Add(button1);
        up1.ContentTemplateContainer.Controls.Add(label1);
        Page.Form.Controls.Add(up1);
    }
    protected void Button_Click(object sender, EventArgs e)
    {
        ((Label)Page.FindControl("Label1")).Text = "Panel refreshed at " +
            DateTime.Now.ToString();
    }

不用多解释了,只要知道创建好控件后,加到ContentTemplateContainer里:)

再来看看Triggers属性:

ASP.NET AJAX中有两种Triggers:分别为AsyncPostBackTriggerPostBackTrigger,简单地说,AsyncPostBackTrigger就是异步调用、局部更新,和我们预想的Ajax效果一样,PostBackTrigger就是整个页面都要刷新(还不理解,既然整个页都刷新了,为什么还要用这个:( ),还是看一个例子:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
 <div>
     <asp:Button ID="Button1" runat="server" Text="异步回送" OnClick="Button1_Click"/>&nbsp;&nbsp;
     <asp:Button ID="Button2" runat="server" Text="整页回送" OnClick="Button2_Click"/><br />
     <br />
     <asp:Label ID="Label1" runat="server" Text="当前时间" Font-Bold="True" Font-Size="Large"></asp:Label></div>
    </ContentTemplate>
    <Triggers>
 <asp:AsyncPostBackTrigger ControlID="Button1"/>
 <asp:PostBackTrigger ControlID="Button2" />
    </Triggers>
</asp:UpdatePanel>

TerryLee的UpdatePanel(一)就到这,咱也先抄到这吧,HOHO!

posted on 2007-01-24 11:05  HenryZhang  阅读(194)  评论(0编辑  收藏  举报