Вызов Javascript после запуска веб-метода - PullRequest
0 голосов
/ 26 июля 2010

Я пытаюсь реализовать каскадный выпадающий список из инструментария.Мне нужно получить счетчик в раскрывающемся списке подкатегорий, если он равен нулю, я отключаю видимость подкатегории.

Если я использую событие javascript OnChange, тогда мой сценарий запускается перед веб-методом, поэтому ямне нужно знать, как запустить мой скрипт ПОСЛЕ того, как веб-метод сработал, пожалуйста.

Моя демонстрационная страница: 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();
}
function getSubCatCount () {$ get ("ddlSubCats1"). Style.display = $ get ("ddlSubCats1"). Length> 1?«блок»: «нет»;}

Ответы [ 2 ]

1 голос
/ 26 июля 2010

Обычно, когда вы вызываете функцию веб-метода через javascript, вы можете предоставить ей две функции обратного вызова. Один из них запускается при возникновении ошибки, а другой срабатывает после завершения вызова веб-метода. Для обратного вызова требуются два аргумента: результат и контекст. Например, если ваша функция называлась myWebMethodFunction и ваше пространство имен, в котором она содержалась, было my.fully.qualified.namespace, оно может выглядеть следующим образом.

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

Как только эта функция завершится, она вызовет onCompleteCallback, передавая результат вашей функции webmethod и все, что вы передали для контекста.
Прошло много времени с тех пор, как я вызвал функцию веб-метода, поэтому я мог получить порядок обратного вызова.

По какой-то причине я тоже не могу что-то комментировать, но могу добавить к этому.
Возможно, я думаю о чем-то другом, но вы должны что-то вызывать через javascript, чтобы запустить свой веб-метод, правильно? Все, что вы используете для вызова веб-метода через javascript, должно обеспечивать механизм для добавления обратного вызова, который будет запущен после завершения и возврата вашего вызова веб-метода.

0 голосов
/ 26 июля 2010

Используйте jQuery.ajax (), это позволяет вам указать функцию успеха и функцию сбоя, которые срабатывают после возврата веб-метода.

...