2014-01-09 30 views
1

我環顧四周,並沒有找到解決我的問題。我有一個PopupControlExtender,不斷顯示彈出窗口,一直給出「Web服務調用失敗:500」錯誤。我有一個具有OnItemCreate屬性的數據網格,該屬性可以正確地爲列中的圖像分配mouseouver和mouseout屬性。以下是包含targetControl圖像以及AJAX控件本身的列的代碼。PopupControlExtender DynamicServiceMethod給500錯誤

下面是AJAX控件的代碼:

  <asp:TemplateColumn 
      HeaderText="Notes" 
      SortExpression="note" 
      ItemStyle-VerticalAlign="Top" 
      HeaderStyle-HorizontalAlign="Center" 
      HeaderStyle-CssClass="colNotes" 
      ItemStyle-HorizontalAlign="Center" 
      ItemStyle-CssClass="colNotes"> 
      <ItemTemplate> 
       <asp:Label ID="lblNotes" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "note") %>'></asp:Label> 
       <%--<asp:HyperLink ID="lnkNotes" Visible='<%# DataBinder.Eval(Container.DataItem, "has_note") %>' Runat="server" Text="..." /> --%> 
       <asp:Image ID="lnkNotes" runat="server" Visible='<%# DataBinder.Eval(Container.DataItem, "has_note") %>' ImageUrl="http://www.ezzylearning.com/tutorials/demos/images/magnify.gif" /> 
       <ajax:PopupControlExtender ID="PopupControlExtender1" runat="server" 
        PopupControlID="pnlPopupNotes" 
        TargetControlID="lnkNotes" 
        DynamicContextKey='<%# Eval("person_id") +","+Eval("group_id") %>' 
        DynamicControlID="pnlPopupNotes" 
        DynamicServiceMethod="GetDynamicContent" Position="Bottom"> 
       </ajax:PopupControlExtender> 
      </ItemTemplate> 
      </asp:TemplateColumn> 

下面是DynamicServiceMethod代碼(我故意剝奪它歸結爲一個簡單的跨度只是試圖得到的東西顯示)...

[System.Web.Services.WebMethodAttribute(), 
    System.Web.Script.Services.ScriptMethodAttribute()] 
    public static string GetDynamicContent(string contextKey) 
    { 


     StringBuilder b = new StringBuilder(); 

     b.Append("<span>Hello!</span>"); 


     return b.ToString(); 
    } 

這裏是我使用的PopupControlID面板...

<asp:Panel ID="pnlPopupNotes" runat="server"> 

因此,通過這個設置,我成功獲得了鼠標懸停/拖拽行爲,但是我期望看到彈出的跨度,而是看到「Web服務呼叫失敗:500」消息。任何想法我可能會失蹤?

編輯

我發現這個問題是如何將Web服務正在從頁面調用。 Web服務實際內置於同一頁面上的用戶控件內。當我將鼠標懸停並進行Web服務調用時,我看到它創建的URL以嘗試訪問Web服務器,它的位置應該更像http://mydomain/default.aspx/Usercontrols/parentUserControl.ascx/GetDynamicContent但是,我無法弄清楚如何修改它的URL呼叫。我嘗試將DynamicServiceMethod屬性值從「GetDynamicContent」更改爲http://mydomain/default.aspx/UserControls/parentUserControl.ascx/GetDynamicContent,但這只是給了一個混亂的混亂。

我希望這個編輯可以給可以幫助我的人更多的洞察力。

回答

1

我想我自己想出了這一個。使用調試控制檯,我可以看到mouseover發出一個web服務調用到主頁面(我的代碼無法操作)並調用web服務方法。我實際上已經在該頁面正在使用的用戶控件(.ascx)中創建了web服務。這似乎並不奏效。我最終完全剝離了Web服務,並創建了自己的.asmx文件,然後添加了DynamicServicePath屬性以指向獨立的Web服務。我希望我不得不求助於一個完全獨立的Web服務,但無論如何,它都可以工作。

1

如果聲明同一頁面上的(DynamicServiceMethod)方法,該方法應該是「靜態」,但是,如果你有一個駐留在(DynamicServicePath)的.asmx的方法,則該方法不應聲明爲'靜態'
這是不容易調試和計算出來的..

1

通常情況下,當我們的查詢有任何錯誤時,將顯示Web服務調用失敗500.我通過檢查查詢中的錯誤來解決此問題,糾正它.. 糾正錯誤後,我們的查詢彈出控件將顯示..