2012-10-17 36 views
0
protected void BindData() 
    { 
     List<Product> products = product.GetRepeaterData(prod); 
     string json = JsonConvert.SerializeObject(products); 
     dataRepeater.DataSource = json; 
     dataRepeater.DataBind(); 
    } 

<asp:Repeater ID="dataRepeater" runat="server"> 
    <HeaderTemplate> 
     List<div id="accordion"> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <h3> 
      <a href="#" style="background-color: gray; height: 25px; color: White; text-decoration: none;"> 
       <%# DataBinder.Eval(Container.DataItem, "Name")%></a></h3> 
     <div> 
      <ul> 
       <li><span>Id: 
        <%# DataBinder.Eval(Container.DataItem, "Id")%></span></li> 
       <li><span>OrganizationId: 
        <%# DataBinder.Eval(Container.DataItem, "Organization")%></span> </li> 
       <li><span>ParentProduct: 
        <%# DataBinder.Eval(Container.DataItem, "Product")%></span></li> 
     </div> 
    </ItemTemplate> 
    <FooterTemplate> 
     </div></FooterTemplate> 
</asp:Repeater> 

error: DataBinding: 'System.Char' does not contain a property with the name 'Name'. 
<%# DataBinder.Eval(Container.DataItem, "Name")%></a></h3> 

我是一个新的JSON和Ajax的概念。我们从web服务获取大量数据,所以它减缓了这个过程,直到调用完成。我必须使用JSON和Ajax进行异步调用。 目前我能够序列化/反序列化数据之前绑定现在我没有看到任何点绑定数据反序列化到中继器后,所以我试图绑定串行化的数据到中继器,但它没有约束力。 其次任何人都可以请告诉我如何做到这一点,作为ajax电话?在客户端添加更新面板是否足以达到目的?我很抱歉,我知道这个问题有点含糊,但我失去了右now..any文档或实例也将帮助..因为我不知道这是做的正确的方式....将序列化的JSON数据绑定到中继器

回答

1

JSON旨在用于客户端,并且您不会使用服务器端控件执行绑定。

如果你想要绑定语法,那里有很多框架。淘汰赛,胡子等

通常不过,你通过一个Ajax调用得到JSON,并使用这些数据来在你需要的方式标记添加到DOM。忘记服务器端控件,除非你想使用更新面板或类似的。

+0

非常感谢...嗯你能指出我在正确的direction..I想我会做到这一点----你通过Ajax调用得到JSON,并使用这些数据来在标记添加到DOM您需要的方式 – Scorpio

+0

这里是一个体面的例子:http://www.codeproject.com/Articles/211489/Using-JSON-with-ASP-NET-3-5 –