通过jQuery获取DevExpress ASPxComboBox的价值

时间:2012-09-10 18:52:55

标签: c# jquery devexpress

我的页面上有一个动态生成的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上执行View Source时,输出如下所示:

<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)我是否可以在控件上调用一个客户端方法来获取该信息?如果是这样,你能提供一个例子吗?

1 个答案:

答案 0 :(得分: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属性,然后使用第一个代码段中的代码获取所需的值。