2010-08-15 36 views
0

我用ASP.NET C#與AJAX專業(http://www.ajaxpro.info不能得到控制產生通過AJAX響應

1)我有面板控制一個div容器,面板控制應該認爲將在代碼隱藏生成的DropDownList功能:

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

2)I有一個JS腳本函數「getDDL」將數據發送到代碼隱藏功能,然後將其接收與所產生的響應小組和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)代碼隱藏功能「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響應來獲取生成的面板和DropDownList的我只接收文本「的System.Web .UI.Design.Panel「或類似的東西,試圖只生成DropDownList - 類似的文本顯示」System.Web.UI.Design.DropDownList「。

但是當我調用一個代碼隱藏函數來獲得這兩個控件時,我看到它們沒有任何問題。爲什麼我無法通過JS獲得它們?我做的很好,調試了數百萬次,並沒有發現任何問題,我無法弄清楚JavaScript有什麼問題? 任何幫助非常感謝。

回答

0

嗯,我認爲你需要返回面板的呈現html。所以你的方法應該返回字符串,你需要在你的方法中渲染Panel Control並返回呈現的html。

0
[Ajax.AjaxMethod] 
public string 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); 
    StringBuilder sb = new StringBuilder(); 
    HtmlTextWriter htw = new HtmlTextWriter(new StringWriter(sb)); 
    panelID.RenderControl(htw); 
    return sb.ToString(); 
} 
在Ajax響應顯示輸出

爲使得任何control.html的

(即)div1.html(ajaxresposeoutput)