Web 方法触发后调用 Javascript

发布于 2024-09-11 19:30:27 字数 1291 浏览 7 评论 0原文

我正在尝试实现工具包中的级联下拉菜单。我需要获取子类别下拉列表中的计数,如果它为零,则关闭子类别的可见性。

如果我使用 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();
}
function getSubCatCount() { $get("ddlSubCats1").style.display = $get("ddlSubCats1").length > 1 ? "block" : "none"; }

I'm trying to implement the cascading dropdown from the toolkit. I need to get the count in a sub category dropdown, if it's zero then I turn off the visibility of the sub category.

If I use the javascript OnChange event then my script fires before the web method, so I need to know how to fire my script AFTER the web method has fired please.

My demo page: http://bit.ly/92RYvq

Below is my code and the order I need it to fire.

[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 ? "block" : "none";

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

朱染 2024-09-18 19:30:27

通常,当您通过 javascript 调用 Web 方法函数时,您可以为其提供两个回调函数。如果出现错误,一个会被触发,而另一个会在 Web 方法调用完成后被触发。回调需要两个参数:结果和上下文。例如,如果您的函数名为 myWebMethodFunction,并且它包含的命名空间是 my.fully.qualified.namespace,则它可能如下所示。

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

该函数完成后,它将调用 onCompleteCallback 并传递 webmethod 函数的结果以及您为上下文传递的任何内容。
我已经有一段时间没有调用 Web 方法函数了,所以我可能已经颠倒了回调的顺序。

由于某种原因,我也无法发表评论,但我可以对此进行补充。
我可能正在考虑一些不同的事情,但你必须通过 javascript 调用某些东西来触发你的 webmethod,对吗?无论您使用什么方式通过 javascript 调用 webmethod,都应该提供一种机制来添加回调,一旦您的 webmethod 调用完成并返回,该回调就会被触发。

Generally when you call your web method function through javascript you can supply it two call back functions. One gets fired if there is an error and the other gets fire once the web method call has been completed. The callback requires two arguments, the result and a context. For example if your function was called myWebMethodFunction and your namespace it was contained in was my.fully.qualified.namespace it may look like this.

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

Once that function finishes, it will call the onCompleteCallback passing the result of your webmethod function and whatever you passed for a context.
It has been a while since I've called a web method function so I might have gotten the order of the callback reversed.

For some reason I can't comment on things either, but I can add to this.
I may be thinking about something different, but you must be calling something through javascript to fire your webmethod, correct? Whatever you use to call the webmethod through javascript should provide a mechanism to add a callback that will be fired once your webmethod call is complete and returned.

乄_柒ぐ汐 2024-09-18 19:30:27

使用 jQuery.ajax() 它允许您指定在 Web 方法返回后触发的成功函数和失败函数。

Use jQuery.ajax() it allows you to specify a success function and a failure function that fire after the web method returns.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文