日期:2014-05-16  浏览次数:20557 次

动态加载用户控件,实现AJAX异步刷新

               需求描述:根据数据库查询数据,动态加载用户控件。每个用户控件每5秒刷新判断一次,每次刷新,读取XML数据,进行判断,按照需求刷新用户控件显示图 用户控件代码前台: 

 <%--显示照片区域--%>
    <asp:UpdatePanel ID="PictureShow" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Panel ID="Panel1" runat="server">
                <asp:Image ID="imgPicture" CssClass="imgPicture" runat="server" AlternateText="未上传" />
        </asp:Panel>
    </ContentTemplate>
    </asp:UpdatePanel>        

    <asp:UpdatePanel ID="UpdatePane4" runat="server" UpdateMode="Conditional">
    <%--时事更新--%>
    <ContentTemplate>
        <asp:Timer ID="CheckTimer" runat="server" Interval="5000" 
            ontick="CheckTimer_Tick">
        </asp:Timer>
    </ContentTemplate>
    </asp:UpdatePanel>

用户控件后台代码:

  	private string id="";
            public string ID
           {
                 set
                {
                     id = value;
                }
        }
	     //Timer_Tick事件
            string strPath = Server.MapPath("~/PictureURL.xml");
            XmlNode xn = doc.DocumentElement.SelectSingleNode("/xn"+ID);
            //判断是否已经更改
            if (xnNewUrl == ture)
            {

                        imgPicture.ImageUrl ="NewURL";
                        //更新的,刷新图片
                        PictureShow.Update();
	    }
主页面代码:

 protected override void OnInit(EventArgs e)
        {
            BLL Check = new BLL();
            DataTable dt = Check.SelectAll();

            //根据上级人员绑定显示图片框数量
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                string ID = dt.Rows[i]["ID"].ToString();
                //动态添加控件
                PictureRefresh control = (PictureRefresh)LoadControl("PictureRefresh.ascx");
                control.ID = "ID" + i.ToString();
                control.ID = ID;
                PicPanel.Controls.Add(control);

            }
        }