ajax刷新ASP.NET Repeater控件的数据

本文介绍了两种使用AJAX更新ASP.NET Repeater控件数据的方法。第一种方法通过JS触发页面回发,将参数传递给后台,重新绑定数据源并刷新页面。第二种方法则是通过AJAX请求后台生成的HTML代码,直接在前端更新Repeater的tbody内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用repeater控件时,遇到这样一个问题,想使用ajax来请求页面来的后台,使repeater的数据源重新绑定,却发现怎么绑定都不行。

研究了半天,研究出以下两种方法:

第一种,利用js使页面回发主动回发一次,回发的时候将参数加在url后面带回后台,在后台接受到参数,查询数据,重新绑定给repeater。

js代码:

这里先找到你需要触发回发的那个控件,我这里是一个class为button的input控件

$(".button").click(function(){

//这里的href是自己,在后面加上参数,这样就能在后台获取到参数信息

   window.location.href = "/ActivitiWorkFlow/WFVersion.aspx?&f=QueryWFDefinitionList&wfname=" + encodeURI(title) + "&start=0&limit=5";
     window.parent.location.reload();//这里有个问题,每次重新绑定了之后不会立即显示数据,所以就做了一下简单的处理,让页面刷新一下,数据就出来了。

});

后台C#代码;

 protected void Page_Load(object sender, EventArgs e)

{

var  var fun = Request["f"];//这里来获取参数

if(string.IsNullOrEmpty(fun))//这里判断是否接受到了参数,如果不判断就使用,可能会抛出异常

{

return;

}

  switch (fun)
            {
                case "QueryWFDefinitionList":
                    var wfname = HttpUtility.UrlDecode(Request["wfname"]);
                    var start = int.Parse(Request["start"]);
                    var limit = int.Parse(Request["limit"]);
                    try
                    {
                        var data = handler.QueryWFDefinitionList(wfname, start, limit, HttpContext.Current);


                        rpLogicVersion.DataSource = data.Value<Newtonsoft.Json.Linq.JArray>("data");//重新绑定数据源
                        rpLogicVersion.DataBind();//
                    }
                    catch (Exception ex)
                    {
                        Log.Error(ex.Message + ex);
                        throw;
                    }
                    break;
            }

}

这样就可以利用js来控制repeater的数据源。

第二种:将新的数据源生成的html代码发送到前台,手动从js里将html代码加入repeater的tbody中

js代码:

        //下面是利用ajax将返回的内容以dom的形式插进当前页面
                //                $.ajax({
                //                    type: "POST",
                //                    url: "/ActivitiWorkFlow/WFVersion.aspx",
                //                    data: "f=QueryWFDefinitionList&wfname=" + encodeURI(title) + "&start=0&limit=5",
                //                    success: function(msg) {
                //                        $("#rp_allVersion tbody").html(msg);//找到repeater的tbody
                //                    }
                //                });

这里发送一个ajax到后台,请求数据,返回的msg是html代码。直接 找到repeater的tbody加入msg就可以了。

C#代码:

 protected void Page_Load(object sender, EventArgs e)

{

var  var fun = Request["f"];//这里来获取参数

if(string.IsNullOrEmpty(fun))//这里判断是否接受到了参数,如果不判断就使用,可能会抛出异常

{

return;

}

  switch (fun)
            {
                case "QueryWFDefinitionList":
                    var wfname = HttpUtility.UrlDecode(Request["wfname"]);
                    var start = int.Parse(Request["start"]);
                    var limit = int.Parse(Request["limit"]);
                    try
                    {
                        var data = handler.QueryWFDefinitionList(wfname, start, limit, HttpContext.Current);


                        rpLogicVersion.DataSource = data.Value<Newtonsoft.Json.Linq.JArray>("data");//重新绑定数据源
                        rpLogicVersion.DataBind();//

                        //利用ajax来刷新repeater的数据时,可以使用下面的代码
                        //var sb = new StringBuilder();
                        //var sw = new StringWriter(sb);
                        //HtmlTextWriter htw=new HtmlTextWriter(sw);
                        //rpLogicVersion.RenderControl(htw);
                        //Response.Write(sb.ToString());
                 
                    }
                    catch (Exception ex)
                    {
                        Log.Error(ex.Message + ex);
                        throw;
                    }finaly{

//这段代码必须写在finaly中,否则会报线程错误

       //Response.End();
                        //Response.Flush()

}
                    break;
            }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值