【问题标题】:asp.net dropdown - populating using javascriptasp.net 下拉列表 - 使用 javascript 填充
【发布时间】:2011-08-08 06:25:55
【问题描述】:

我的网页中有 40 个 asp.net 下拉列表。当我使用 DataBind() 在服务器端绑定控件时,需要 12 秒,在此期间页面为空白。如果没有数据绑定,页面将在 1 秒内加载。

所以我决定在客户端进行绑定。当我用谷歌搜索时,我得到了这个link。 但我面临的问题是,当我在 javascript 中使用 PopulateControl() 时,在回发期间我只会得到 SelectedIndex。

asp.net 下拉菜单具有 SelectedIndex、SelectedValue、SelectedText 等属性。这些属性在代码隐藏中被大量使用,根据所选索引更改逻辑对我来说非常困难。

有没有一种方法可以将控件与 javascript 绑定并在回发期间获取所有这些属性。

提前致谢。

【问题讨论】:

    标签: javascript asp.net drop-down-menu


    【解决方案1】:

    由于下拉菜单中的项目在页面加载时不存在,它们将无法以正常的 ASP.net 方式访问。使用请求对象获取选中的值:

    string selVal = request.Form["dropDownName"]; //C# code
    

    如果您使用 MasterPages 或其他命名容器,请小心,因为请求对象中传递的名称可能会被破坏。

    您也可以在此处使用纯 HTML 选择控件。

    【讨论】:

    • 这些项目存在于 aspx 页面中。所以我相信它应该在 page_load 中可用。只有绑定到这些项目的数据在客户端(Ajax)中完成。不过,我想知道为什么在回发期间,javascript 绑定的值在代码隐藏(服务器端)中不可用。
    • 我选词不当。我指的是下拉列表本身中的项目(选项)。附带说明一下,所有列表都包含相同的项目还是不同的项目?当您最初的页面加载时间约为 40 秒时,是有多个数据库调用还是只有一个?
    • 哦。好的。所有这些下拉菜单都有不同的值。当我加载所有 DataBind() 注释掉的页面时,它会在 1 秒内加载。控件现在将为空。所以我用ajax调用重写了绑定JS。 DB 调用是一次调用,并获取所有 40 个表。它在 2 秒内执行,结果在第一次命中后被缓存。所以现在我需要找到一种方法,让 JS 添加的
    • 唯一想到的是使用更新面板来更新下拉菜单,因为单独的 javascript 不会更新服务器端。下拉菜单中有多少项?问题可能是页面大小。使用 firebug for firefox 之类的工具看看。它可以显示等待时间和页面大小。通过禁用下拉菜单上的视图状态,您可以使用服务器端绑定下拉菜单大幅减小页面大小。
    猜你喜欢
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 2012-04-11
    • 2013-07-03
    相关资源
    最近更新 更多