VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 714|回复: 7

如何用ajax动态加载控件

[复制链接]

1

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-19 18:00:01 | 显示全部楼层 |阅读模式
[Ajax.AjaxMethod()]
                public void CreateDownList(string id,string ddlName)
                {
PlaceHolder1.Controls.Add(control);
}

失效,请问怎么样才能让他有效
回复

使用道具 举报

0

主题

3

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-26 21:00:02 | 显示全部楼层
不知道哦:(
回复

使用道具 举报

0

主题

64

帖子

35.00

积分

新手上路

Rank: 1

积分
35.00
发表于 2020-1-27 18:36:01 | 显示全部楼层
没用过你的那种,并且我对ajax暂时尽量不答。不过如果你自己找解决之道,关键是:服务器端要将控件 Render 所得到的 html 字符串发送给客户端,然后客户端使用这段 html 更新控件的表现(例如使用OuterHtml属性)。

实际上,要想开发交互式的ajax应用程序,还要考虑到控件的成千上万的状态信息怎样管理,以及怎样避免服务器端总是重建页面对象(当强调流畅、细节的操作体验时,原来那种web页面重建机制实在是太慢了)。
回复

使用道具 举报

0

主题

17

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
发表于 2020-1-27 18:54:01 | 显示全部楼层
ajax所調用的後台事件,不能調用服務器控件。
所以樓主這樣寫:PlaceHolder1.Controls.Add(control);
當然出錯。
回复

使用道具 举报

1

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-1-27 21:18:01 | 显示全部楼层
pyonus,我也看了一些网上的说明,模糊的知道了这样做会出错,请问一下,怎么才能解决这种状况,或是给我一点方向,应该往哪方面找原因
回复

使用道具 举报

1

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-1-27 23:36:01 | 显示全部楼层
saintfrosty,我学.net不是很深,很多原理的我还看不大懂,要不我把原码贴出来你给我点提示的方向好不。

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using Ajax;
using ZhuJi.Common;
using ZhuJi.Facade;
using Globals=ZhuJi.Resources.Globals;

namespace ZhuJi.Web
{
        /// <summary>
        /// WebForm2 的摘要说明。
        /// </summary>
        public class WebForm2 : Page
        {
                protected PlaceHolder PlaceHolder1;

                private void Page_Load(object sender, EventArgs e)
                {
                        Utility.RegisterTypeForAjax(typeof (WebForm2));
                        CreateDownList("0", "ddl0");
                }

                [AjaxMethod()]
                public void CreateDownList(string id, string ddlName)
                {
                        PlaceHolder1.Controls.Add(EventControls.CreateControl("System.Web.UI.WebControls.DropDownList", ddlName));
                        DropDownList ddl = (DropDownList) FindControl(ddlName);
                        Category category = new Category();
                        string whereValue = string.Concat("ParentId =", id);
                        ddl.DataSource = category.ListAll(whereValue, "Path");
                        ddl.DataTextField = "Title";
                        ddl.DataValueField = "Id";
                        ddl.DataBind();
                        ddl.Items.Insert(0, new ListItem(Globals.ResMan("Category.Root"), id));
                        ddl.Attributes.Add("onChange", "LoadCategory(this)");
                }

                #region Web 窗体设计器生成的代码

                protected override void OnInit(EventArgs e)
                {
                        //
                        // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
                        //
                        InitializeComponent();
                        base.OnInit(e);
                }

                /// <summary>
                /// 设计器支持所需的方法 - 不要使用代码编辑器修改
                /// 此方法的内容。
                /// </summary>
                private void InitializeComponent()
                {
                        Load += new EventHandler(Page_Load);
                }

                #endregion
        }
}
回复

使用道具 举报

0

主题

64

帖子

35.00

积分

新手上路

Rank: 1

积分
35.00
发表于 2020-1-28 15:18:01 | 显示全部楼层
你的代码没用。你根据我说的要点,自己google一下,什么是asp.net控件的Render,怎样通过它得到html,以及dhtml的 outerHtml 或者 innerHtml。
回复

使用道具 举报

1

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-1-29 13:45:02 | 显示全部楼层
saintfrosty,很感谢你给我方向
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表