日期:2014-05-17  浏览次数:20617 次

repeater中怎么绑定从AJAX返回的JSON数据
RT。
页面中有一个REPEATER,现在需要绑定从AJAX传回来的JSON数据。怎么绑定?
------解决方案--------------------
把json字符串转换成js对象
然后直接用,遍历repeater的item(这里假设是<div id="items"><ul>一堆<li>

//偷懒的转换方法,直接调用eval方法,数据源通常是个集合
var rptDatas = eval(ajaxData);
var items = docuement.getElementById("items").getElementsByTagName("li");
var count = Math.min(rptDatas.lenght, items.length);
for(var i=0;i<count; i++){
   //假设数据项有title和date属性
   items[i].innerHTML = "标题:" + rptDatas[i].title + " 日期:" + rptDatas[i].date;
}

查一下json的使用就知道了
------解决方案--------------------
将数据项定义成对象T,在服务端(CS)将List<T>序列化成Json字符串,然后写到响应流

        public static string ToJsonString<T>(T obj)
        {
            var jsSer = new System.Web.Script.Serialization.JavaScriptSerializer();
            StringBuilder output = new StringBuilder(32);
            jsSer.Serialize(obj, output);            
            return output.ToString();
        }

Ajax请求的后台页面loadData.ashx
List<Test> tests = 数据源;
Response.Write(ToJsonString(tests));
Response.End();

由ajax去请求loadData.ashx,在ajax回调函数success函数中,参照4#写的更新html页面中的内容
http://laputaliya.blog.51cto.com/751941/536858/

------解决方案--------------------
引用:
Quote: 引用:

不明白,你既然用了控制为什么不在后台绑定数据?
你如果直接用json那为什么还要用服务器控件呢?

首次加载的时候是打算用REPEATER直接绑定数据源。然后做分页的时候,因为我一个页面有几个标签式的选择,重新发回后台的话页面会刷新。会跳回第一个标签处

可以分两种情况:如果按你的需求的话那就是首次加载后台绑定,然后用ajax,rpt也是生成相应的html标签,找到相应的标签根据返回的json数据动态添加内容就可以了。

如果不用后台的,那就全用前台ajax方式请求数据,你以前后台首次加载怎么取数据,那你这次加载就怎么用ajax取数据。