Я использую ASP.NET C # с AJAX Professional (http://www.ajaxpro.info)
1) У меня есть контейнер div с элементом управления Panel, элемент управления Panel должен содержать DropDownList, который будет сгенерирован в функции codebehind:
<div id="divDDL" runat="server">
<asp:Panel ID="Panel1" runat="server">
</asp:Panel>
</div>
2) У меня есть функция сценария JS "getDDL", которая отправляет данные в функцию codebehind, а затем получает ответ с сгенерированными элементами управления Panel и DropDownList:
function getDDL(lng)
{
MyCodebahindClass.GetDDL(0, lng, callbackDDL);
//callbackDDL is a response function
}
function callbackDDL(response)
{
//here the response with the generated DropDownList and Panel control comes to the div element
document.getElementById('<%=divDDL.ClientID %>').innerHTML = response.value;
}
3) Функция Codebehind «GetDDL» должна возвращать сгенерированный DropDownList внутри элемента управления Panel:
[Ajax.AjaxMethod]
public Panel GetDDL(int itemId, int lng)
{
PanelID = Panel1.ID;
DropDownList rubricDDL = new DropDownList();
rubricDDL.ID = "Fashionable_Catheter";
rubricDDL.DataTextField = "title";
rubricDDL.DataValueField = "id";
rubricDDL.DataSource = %LINQ STUFF%;
rubricDDL.DataBind();
panelID.Controls.Add(rubricDDL);
return panelID;
}
4) Когда я пытаюсь получить сгенерированный Panel и DropDownList через ответ JS, я получаю только текст «System.Web.UI.Design.Panel» или что-то в этом роде, пытаюсь сгенерировать только DropDownList - похожий текст появляется "System.Web.UI.Design.DropDownList".
Но когда я вызываю функцию codebehind для получения этих двух элементов управления, я вижу их без проблем. Почему я не могу получить их через JS? Я все делаю нормально, отлаживаю миллион раз и не вижу проблем, не могу понять, что не так с JavaScript?
Любая помощь высоко ценится.