Вы понимаете, что RptClientDetails
- это управление на стороне сервера?Когда вы связываетесь с ним при вызове BindJobs
, это связывание, но вы не возвращаете сгенерированный HTML.
Вам необходимо вернуть HTML-код ретранслятора после того, как он был связан в вашем AJAX.Затем в вашем обработчике успеха вставьте HTML-код в то место, где вы хотите отобразить Repeater
.
Я бы порекомендовал проверить пост Рика Строля о том, как это сделать:
jQuery и 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
.