2

我正在重振一个非常古老的应用程序,并试图不将 Devexpress 或 Telerik 引入该应用程序。

我需要一些具有多项选择可用性的下拉列表。我在网上四处寻找,选择的 jquery 插件看起来是要走的路。

我在我的一个测试页面中实现了它,但我试图在没有太多工具的情况下快速实现它。我在后面的代码中抓取服务器端的多个选定值时遇到了一些困难。我真的不想拥有一堆客户端功能来保存和维护有关更改等的数据。

有没有人尝试过在这个数据服务器端与客户端进行比较并且有运气?

代码示例。:

<select id="slcExample" multiple class="chosen-select" style="width:350px;" runat="server"></select>

<script type="text/javascript">
        $(document).ready(function () {
            var config = {
                '.chosen-select': {},
                '.chosen-select-deselect': { allow_single_deselect: true },
                '.chosen-select-no-single': { disable_search_threshold: 10 },
                '.chosen-select-no-results': { no_results_text: 'Oops, nothing found!' },
                '.chosen-select-width': { width: "95%" }
            }
            for (var selector in config) {
                $(selector).chosen(config[selector]);
            }
        });
  </script>

我发现,如果我可以获取此属性 .SelectedIndices ,我将可以访问所选值,但它不会让我在服务器端使用它,因为它是 asp.net 中选择的受保护属性。

4

4 回答 4

1

这就是我最终要做的。:

        Dim index As Integer
        Dim valuesChosen As String = ""
        For index = 0 To (slcExample.Items.Count - 1)
            If (slcExample.Items(index).Selected) Then
                valuesChosen += slcExample.Items(index).Value.Trim + ";"
            End If
        Next

我需要服务器端的东西。希望这对其他人有帮助。如果您有更好的选择,我愿意看到它,如果更好,我会标记为答案。

于 2013-08-14T14:27:06.633 回答
0

我有同样的问题并改用这个 JQuery 插件:http ://www.erichynds.com/blog/jquery-ui-multiselect-widget

由于 asp.net 下拉控件不允许多个项目,因此我使用了带有 runat 服务器和 ID 的常规标记。该插件实际上会选择项目,然后您可以从后面的代码中读取它们。

该插件将在 asp.net 下拉列表中的客户端运行,但您无法在后面的代码中获取所选项目。所以根据你的需要...

希望这可以帮助!邦妮

于 2014-03-28T17:15:38.620 回答
0

您可以使用 asp:net 类创建隐藏字段。使用 javascript 方法,将所有值添加到逗号分隔列表中。

提交表单后,您可以在服务器端获取列表。

试着把 clientIDMode="Static"

<asp:HiddenField runat="server" ID="hidTest" ClientIDMode="Static" />

但如果你不能,你将不得不从 asp 中查看生成的名称,以便在你的 javascript 方法中更新它

<script type="text/javascript">
        $(document).ready(function () {
            var config = {
                '.chosen-select': {},
                '.chosen-select-deselect': { allow_single_deselect: true },
                '.chosen-select-no-single': { disable_search_threshold: 10 },
                '.chosen-select-no-results': { no_results_text: 'Oops, nothing found!' },
                '.chosen-select-width': { width: "95%" }
            }
            var hiddenSeparatedList = "";
            for (var selector in config) {
                hiddenSeparatedList += $(selector).chosen(config[selector]) + ','
                $('#hidTest').val(hiddenSeparatedList);
            }
        });
  </script>
于 2013-08-14T14:10:58.020 回答
0

我使用了一个列表:

        int i;
        IList<string> chosenItems = new List<string>();
        for (i = 0; i <= selectExample.Items.Count - 1; i++)
        {
            if (selectExample.Items[index].Selected)
            {
                chosenItems.Add(selectExample.Items[index].Value.Trim());
            }
        }
于 2016-05-13T19:47:32.553 回答