2010-09-13 28 views
1

我想要将数据绑定到Repeater,只需点击特定的Button即可。使用Ajax将数据绑定到中继器

我可以通过jQuery做一个ajax请求,并调用绑定数据的方法,但是在页面上什么都不显示。

这是我使用的数据绑定到Repeater方法:

public void BindJobs() 
{ 
    if (RptClientDetails.Items.Count != 0) return; 
    RptClientDetails.DataSource = new JobBusiness().GetJobInfoClient(ClientId); 
    RptClientDetails.DataBind(); 
    Response.Write("myresponse"); 
    Response.End(); 
} 

上述方法成功地调用并通过GetJobInfoClient检索的数据。这是我的阿贾克斯电话:

function BindJobs() { 
    $.ajax({ 
     type: "POST", 
     url: "Client/Default.aspx?action=bindJobs", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      // Do something interesting here. 
     } 
    }); 
} 

回答

3

你知道RptClientDetails是一个服务器端控制?当你在BindJobs的调用中绑定它时,它是绑定的,但是你没有返回生成的HTML。

你需要在你的AJAX绑定后返回Repeater的HTML。然后在您的成功处理程序中,将HTML注入想要显示Repeater的位置。

我会建议您检查出Rick Strahl's关于如何做到这一点后:

jQuery and ASP.NET Article Part 2

最简单的方法是放弃了AJAX一起,使用UpdatePanel。只需将您的Repeater和您的Button包装为UpdatePanel,调用将由框架处理,新的HTML将为您注入。这比使用jQuery/AJAX方法稍微重一点,但它几乎需要0代码。

EG:

<!-- Your other controls --> 
<asp:UpdatePanel ID="yourPanel" runat="server"> 
    <ContentTemplate> 
     <!-- Your Repeater HERE --> 
     <!-- Your Button HERE and server side make it call your bind --> 
    </ContentTemplate> 
</asp:UpdatePanel> 
<!-- rest of your controls --> 

编辑:

如果你想呈现的控制,让你可以把它放回你的回应,你可以这样做:

// This will get your Repeaters rendered HTML 
StringBuilder sb = new StringBuilder(); 
StringWriter tw = new StringWriter(sb); 
HtmlTextWriter hw = new HtmlTextWriter(tw); 
RptClientDetails.RenderControl(hw); 
string yourReatersRenderedHtml = sb.ToString(); 

你然后可以在AJAX调用中返回该字符串,然后使用成功方法将其注入到div或其他占位符中。老实说,UpdatePanel是更容易,我会推荐它,如果你寻找最简单的方法来做到这一点,并没有真正担心使用UpdatePanel的性能影响。

+0

这是否意味着我必须创建HTML服务器端并将其注入到响应中? – user446582 2010-09-13 18:14:26

+0

是的,或使用UpdatePanel。 – SLaks 2010-09-13 18:15:17

+0

我试过更新面板没有成功,我认为最简单的方法是创建HTML,但.........这是最好的/正确的解决方案吗? – user446582 2010-09-13 18:17:15

0

您应该使用UpdatePanel而不是jQuery ajax。

0

如果您的中继器正在创建数据列表/数据表,您可能需要试一试jqGrid。设置起来非常简单,并且可以很好地与返回JSON的Ajax调用(也可能是其他格式,如XML)配合使用。根据我的经验,它总体上会产生性能更好,更易维护的代码。

相关问题