C# 使用Ajax将数据绑定到中继器

C# 使用Ajax将数据绑定到中继器,c#,.net,asp.net,ajax,data-binding,C#,.net,Asp.net,Ajax,Data Binding,单击特定的按钮,我想将数据绑定到中继器 我可以通过jQuery执行ajax请求,并调用该方法来绑定数据,但页面上没有显示任何内容 这是我用来将数据绑定到中继器的方法: public void BindJobs() { if (RptClientDetails.Items.Count != 0) return; RptClientDetails.DataSource = new JobBusiness().GetJobInfoClient(ClientId); RptCli

单击特定的
按钮
,我想将数据绑定到
中继器

我可以通过jQuery执行ajax请求,并调用该方法来绑定数据,但页面上没有显示任何内容

这是我用来将数据绑定到
中继器的方法:

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中绑定转发器后,需要返回转发器的HTML。然后在成功处理程序中,将HTML注入到希望显示
转发器的位置

我建议查看关于如何做到这一点的帖子:

最简单的方法是将AJAX放在一起,并使用
UpdatePanel
。只需将您的
中继器
按钮
包装为
UpdatePanel
,调用将由框架处理,新的HTML将为您注入。这比使用jQuery/AJAX方法要重一点,但几乎需要0个代码

例如:


然后,您可以在AJAX调用中返回该字符串,然后使用success方法将其注入
div
或其他占位符中。老实说,
UpdatePanel
要简单得多,如果您正在寻找最简单的方法来实现这一点,并且不担心使用
UpdatePanel对性能的影响,我建议您使用UpdatePanel,而不是jQuery ajax。

您可以尝试一下,如果中继器当前正在创建数据列表/表格。它非常容易设置,并且可以很好地处理返回JSON(可能还有其他格式,比如XML)的ajax调用。根据我的经验,这会使代码总体性能更好、更易于维护。

这是否意味着我必须创建HTML服务器端并将其注入响应?我尝试了更新面板但没有成功,我认为最简单的方法是创建HTML,但是………这是最好的/正确的解决方案吗?@user446582您对
UpdatePanel
有什么问题?您尝试的方式要复杂得多。非常感谢!我需要在一个页面上使用类似的东西,该页面已从Dot Net Nuke导入到VB part C#ASP.Net页面。这是一个混乱的半,但长话短说,后回几乎不存在,并没有得到适当的渲染。这项工作帮助很大。
<!-- 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();