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

前端之家收集整理的这篇文章主要介绍了ajax刷新ASP.NET Repeater控件的数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

使用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)

{

varvar 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,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;
}

}

原文链接:https://www.f2er.com/ajax/165294.html

猜你在找的Ajax相关文章