【问题标题】:How to pass an additional parameter to CascadingDropDown ServiceMethod?如何将附加参数传递给 CascadingDropDown ServiceMethod?
【发布时间】:2010-10-01 10:07:52
【问题描述】:

我有两个链接的CascadingDropDowns。两者都工作正常。 问题是在为DropDwonList 提供值的底层网络方法中,我需要读取一个附加参数。设置下拉列表的默认项时需要此参数。

我不知道如何传递或读取该参数。 我在 Internet 上阅读了有关 ContextKey 属性的信息。但我不知道如何从WebMethod 访问它。

我尝试通过HttpContext.Current.Session 进入会话(希望我可以从会话中提取一些参数),但似乎WebPageWebMethod 的会话不同。

所以我在这里迷路了,有什么想法吗?

【问题讨论】:

    标签: asp.net web-services cascadingdropdown


    【解决方案1】:

    要让 ContextKey 工作,您需要做三件事。

    1. 将 CascadingDropDown 上的 UseContextKey 属性设置为 true
    2. 更改您的 webmethod 的方法签名以接受 contextKey 参数:

    public CascadingDropDownNameValue[] GetDropDownContents( string knownCategoryValues, string category, string contextKey) { ... }

    注意:参数必须精确大小写。

    1. 使用 JavaScript 设置 ContextKey。 AJAX CascadingDropDown 在 DOM 中公开了该属性的 getter/setter:

      document.getElementById('idOfCDDL').set_contextKey('valueyouwant');

    HTH。

    【讨论】:

    • 谢谢你,所以我有希望!但是我没有经验,无法理解一件事。例如,我如何通过 JavaScript 获取数据源以将数据源中的值传递到 set_contextKey('value_from_datasource_row')。以及我应该在网页的何处和何时运行 document.getElemntById 方法?
    • 这取决于您要设置为上下文键的内容 - 您的问题是“默认项”。不知道那是什么,但我猜它是静态的,这就引出了一个问题,为什么你需要通过它。不过,作为起点,您可以将“selectedIndexChanged”客户端 javascript 事件处理程序附加到 DDL,并在那里设置 contextkey。
    • 当您说数据源时,您是指 DDL 吗?请记住,JavaScript 都是客户端,没有“数据源”,只有 HTML - 所以在 DDL 的情况下会有“选项”。因此,您需要在 DDL 进行选择时将 contextkey 设置为所选索引。
    • 感谢您的关注:) 我会尽量说得更具体一些。只是忘记默认项目的事情。假设我想将附加参数传递给方法:) DataSource 我的意思是由 ASP 框架提供的 DataSource 对象:) - 您可以将 GridView 连接到它并显示一些数据。现在我的问题是:呈现页面时,AJAX 会自动填充下拉列表,无需任何用户交互。如何在那个时候将值作为 contextKey 传递,我想从生成的数据源的一行中获取该值。你现在明白我了吗?
    • 听起来您想将 contextkey 传递给 FIRST CDDL 的 web 方法(即在呈现页面时自动执行的方法)。如果是这种情况,为什么不设置 contextKey 服务器端(例如在 Page_PreRender 上)?当您想根据用户选择“更改”此 contextKey 时,您可以使用 JavaScript 将其设置为客户端,但如果它是来自 AJAX 的自动调用,只需将其设置为服务器端 (ajaxCDDL.ContextKey = "foo")跨度>
    【解决方案2】:

    传递附加参数 有时,为组合框提供 JSON 的操作方法可能需要额外的参数。以下是如何将它们传递给您的操作: 将附加参数传递给操作方法

    function onComboBoxDataBinding(e) {
        e.data = $.extend({}, e.data, { customParam: "customValue"});
    }
    

    【讨论】:

      【解决方案3】:

      在您的 .cs 文件中写入:

      cascadingdropdown1.contextKey=<parameter you need>
      

      然后在 web 方法中使用 contextKey

      【讨论】:

        猜你喜欢
        • 2015-03-03
        • 1970-01-01
        • 2011-12-21
        • 2013-01-09
        • 1970-01-01
        • 1970-01-01
        • 2021-12-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多