0

ASP.NET C#をAJAX Professionalで使用しています(http://www.ajaxpro.info

1)Panelコントロールを備えたdivコンテナがあります。Panelコントロールは、codebehind関数で生成されるDropDownListを保持する必要があります。

<div id="divDDL" runat="server">
    <asp:Panel ID="Panel1" runat="server">
    </asp:Panel>
</div>

2)コードビハインド関数にデータを送信するJSスクリプト関数「getDDL」があり、生成された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)JS応答を介して生成されたPanelとDropDownListを取得しようとすると、「System.Web.UI.Design.Panel」などのテキストのみが表示され、DropDownListのみを生成しようとしました。同様のテキストが「System」と表示されます。 Web.UI.Design.DropDownList」。

しかし、これら2つのコントロールを取得するために分離コード関数を呼び出すと、問題なく表示されます。JSで取得できないのはなぜですか?私はすべてをうまく行い、何百万回もデバッグしましたが、問題は見られませんでした。JavaScriptの何が問題になっているのか理解できませんか?どんな助けでも大歓迎です。

4

2 に答える 2

0

うーん、パネルのレンダリングされたhtmlを返す必要があると思います。したがって、メソッドは文字列を返す必要があり、メソッドでパネル コントロールをレンダリングし、レンダリングされた html を返す必要があります。

于 2010-10-11T10:00:49.870 に答える