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();