使用Ajax将数据绑定到Repeater

我想在点击特定Button将数据绑定到Repeater

我可以通过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检索数据。 这是我的ajax电话:

 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. } }); } 

您是否意识到RptClientDetails是服务器端控件? 当您在调用BindJobs时绑定它时,它是绑定但您不返回生成的HTML。

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

我建议查看Rick Strahl关于如何执行此操作的post:

jQuery和ASP.NET文章第2部分

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

例如:

         

编辑:

如果要渲染控件以便可以在响应中将其发送回来,则可以执行以下操作:

 // 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调用中返回此字符串,然后使用success方法将其注入div或其他占位符。 老实说, UpdatePanel要容易得多,如果您正在寻找最简单的方法并且并不担心使用UpdatePanel对性能产生影响,我会建议它。

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

如果您的转发器当前正在创建数据列表/表,您可能需要尝试jqGrid 。 它很容易设置,并且可以很好地处理返回JSON的ajax调用(也可能是其他格式,如XML)。 根据我的经验,它可以产生性能更好,维护更好的代码。