【问题标题】:C# drop down access issue using jquery使用 jquery 的 C# 下拉访问问题
【发布时间】:2012-08-01 05:17:49
【问题描述】:

我在从后面的 c# 代码中访问下拉项目时遇到问题

场景: 我正在使用 jquery/ajax 调用根据用户选择修改下拉列表。在从后面的代码中访问下拉项时,它仍然保留旧列表。

请帮助从后面的 c# 代码访问更新的下拉列表。

示例代码

jQuery 代码:

$.ajax({
            type: 'POST',
            url: "Search.aspx/LoadNewOptions",
            contentType: 'application/json;charset=utf-8;',
            dataType: "json",
            data: "",
            success: function (data) {
                 $("#dropdown").empty();              

                $($.parseJSON(data.d)).each(function () {
                    var Option = $('<option />');

                   xOption.attr('value', this.value).text(this.label);
                    $('#dropdown').append(Option);

                    }
                });
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert(errorThrown);
            }
        });

代码背后的 C# 代码:

dropdown.SelectedItem.Value.Trim()   // returns old value

替代解决方案: 创建了单独的 javascript 函数并将所选项目值存储在隐藏变量中。从后面的代码访问隐藏变量没有问题。

【问题讨论】:

  • 您是在页面加载事件中重新加载下拉值,还是通过检查 Postback 来阻止它? (如果(!IsPostBack){加载东西})

标签: c# javascript jquery


【解决方案1】:

除非你告诉它,否则服务器不知道客户端发生了什么。

看起来您正在动态地将元素附加到下拉列表中。如果你在页面下次执行时重新绑定列表,它不知道你在客户端修改了它。

  • 隐藏字段适用于简单情况

  • 您可以检查 POST 并查看它是否包含列表中不存在的值,如果是,则添加它

【讨论】:

    【解决方案2】:

    您的旧值没有更改的原因是服务器端不知道新值。除非您将其发布回服务器,否则它将不可见。

    【讨论】:

    • 那么隐藏控件是如何工作的呢?可能只有下拉列表有问题...
    • 取决于您如何定义它。是ASP.Net控件还是纯html控件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多