【问题标题】:Get value of DevExpress ASPxComboBox via jQuery通过 jQuery 获取 DevExpress ASPxComboBox 的值
【发布时间】:2012-09-11 04:51:37
【问题描述】:

我的页面上有一个动态生成的 ASPxComboBox,它由几个 ListEditItem 对象组成。我可能有这样的东西作为 ASPxComboBox 的来源:

foreach (KeyValuePair<string, int> row in list)
{
    ListEditItem item = new ListEditItem(row.Key.ToString(), 
        row.Value.ToString());
    ddl.Items.Add(item);
}

在此示例中,row.Value 包含诸如“1431、5415、12897、3491”等值(即随机数据库 ID 值)。在调试模式下单步执行此代码可验证 ListEditItems 添加了正确的值。但是,当我在生成的 HTML 上查看源代码时,输​​出如下所示:

<option value="1">4DAES</option>
<option value="2">631</option>
<option value="3">ACB</option>
<option value="4">ABDHP</option>

我希望它看起来像这样(注意选项值的变化与我在上面提供的数据库 ID 相对应:)

<option value="1431">4DAES</option>
<option value="5415">631</option>
<option value="12897">ACB</option>
<option value="3491">ABDHP</option>

我的问题是这样的:

使用 jQuery,我如何获得我正在寻找的 ID 的 ACTUAL 值?我看到了两种可能的选择:

1) ASPxComboBox 控件上是否有设置告诉它呈现正确的值而不是递增的 ID?

2) 是否有我可以调用控件的客户端方法来为我获取该信息?如果有,你能举个例子吗?

【问题讨论】:

  • 如果不创建新的 ListEditItem 而是使用 Add() 的替代语法直接添加项目,例如 dd1.Items.Add(row.Key.ToString(), row.Value.ToString());,会发生什么?
  • 我不确定它为什么会这样做,但我还有一些想法。 :) 您没有将ASPxComboBox.ValueType 更改为与System.String 不同的值吗?您没有在 ASPxComboBox 上设置任何绑定吗? (文档说,如果设置了 Binding,则 .Items 将被忽略。)您的选项 #2 不起作用,因为客户端代码只能提取页面上已经存在的数据(没有发出某种 Ajax 请求来获取数据,这不应该是必需的。)
  • 有没有想过为什么 ID 与您输入的内容不匹配?例如,0,1,2,3 而不是数据库 ID?我有同样的问题..

标签: c# jquery devexpress


【解决方案1】:

我想出了答案:

var clientInstanceName = this.data('clientinstancename');
var combo = ASPxClientControl.GetControlCollection().GetByName(clientInstanceName);
return combo.GetSelectedItem().value;

ASPxComboBox 控件有一个“ClientInstanceName”属性,允许您为该对象分配一个名称,以便您可以在客户端对其进行操作。由于我是动态创建这些控件,因此我不知道名称提前,所以我将其添加为“data-”属性,如下所示:

ddl.ClientInstanceName = fld.FieldName;
ddl.Attributes.Add("data-clientinstancename", fld.FieldName);

底线是,为控件定义一个 ClientInstanceName 属性,然后使用第一个 sn-p 中的代码获取您需要的值。

【讨论】:

  • 或者用window[clientInstanceName]代替ASPxClientControl.GetControlCollection().GetByName
  • 有没有想过为什么 ID 与您输入的内容不匹配?例如,0,1,2,3 而不是数据库 ID?我也有同样的问题。
猜你喜欢
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-24
相关资源
最近更新 更多