2010-07-26 20 views
0

我試圖從工具包中實現級聯下拉菜單。我需要在子類別下拉列表中計數,如果它爲零,則關閉子類別的可見性。Web Method啓動後調用Javascript

如果我使用JavaScript OnChange事件,那麼我的腳本會在Web方法之前觸發,所以我需要知道如何在Web方法觸發後觸發我的腳本。

我的演示頁:http://bit.ly/92RYvq

下面是我的代碼,我需要它開火的命令。

[WebMethod] 
public CascadingDropDownNameValue[] GetSubCats1(string knownCategoryValues, string category) 
{ 
    StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues); 
    int CategoryID; 
    if (!kv.ContainsKey("Category") || !Int32.TryParse(kv["Category"], out CategoryID)) 
    { 
     return null; 
    } 
    dsSubCat1TableAdapters.Categories_Sub1TableAdapter SubCats1Adapter = new dsSubCat1TableAdapters.Categories_Sub1TableAdapter(); 
    dsSubCat1.Categories_Sub1DataTable SubCats1 = SubCats1Adapter.GetSubCats1(CategoryID); 

    List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>(); 
    foreach (DataRow dr in SubCats1) 
    { 
     values.Add(new CascadingDropDownNameValue((string)dr["SubCategory1"], dr["SubCatID1"].ToString())); 
    } 
    return values.ToArray(); 
} 
功能getSubCatCount(){$ 得到( 「ddlSubCats1」)。的style.display = $ GET( 「ddlSubCats1」)。長度> 1? 「block」:「none」; }

回答

1

通常當你通過javascript調用你的web方法函數時,你可以提供兩個回調函數。一旦Web方法調用完成,一個錯誤會被觸發,另一個會被觸發。回調需要兩個參數,結果和上下文。例如,如果你的函數被稱爲myWebMethodFunction而你的名字空間被包含在my.fully.qualified.namespace中,它可能看起來像這樣。

my.fully.qualified.namespace.myWebMethodFunction(param1, param2, ... , paramN, onErrorCallback, onCompleteCallback, context); 

一旦函數結束,它會調用onCompleteCallback通過你傳遞的上下文您的WebMethod功能和任何的結果。
已經有一段時間了,因爲我已經調用了一個web方法函數,所以我可能已經取消了回調的順序。

出於某種原因,我無法評論事情,但我可以補充一點。
我可能會考慮一些不同的東西,但是你必須通過javascript調用某些東西來解決你的web方法,對嗎?無論你用什麼來通過javascript調用webmethod,都應該提供一種機制來添加一個回調函數,一旦webmethod調用完成並返回,就會觸發回調函數。

+0

熔體由於他的名譽,通過答案系統回覆給你,就像一個fyi。 – Brian 2010-07-27 17:11:27

0

使用jQuery.ajax(),它允許你指定一個成功的功能和故障功能的Web方法返回後觸發。

+0

我認爲你的意思是jQuery,你有一個工作的例子嗎? 這是我想在上面的web方法後運行的代碼: function getSubCatCount(){$ get(「ddlSubCats1」)。style.display = $ get(「ddlSubCats1」)。length> 1? 「block」:「none」; } Registers Melt – Melt 2010-07-26 16:30:48