1

いくつかのListEditItemオブジェクトで構成される動的に生成されたASPxComboBoxがページにあります。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の実際の値を取得するにはどうすればよいですか?これを行うための2つの可能なオプションがあります。

1)ASPxComboBoxコントロールに、増分IDではなく正しい値をレンダリングするように指示する設定がありますか?

2)その情報を取得するコントロールで呼び出すことができるクライアント側のメソッドはありますか?もしそうなら、あなたは例を提供できますか?

4

1 に答える 1

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プロパティを定義し、最初のスニペットのコードを使用して、必要な値を取得します。

于 2012-09-10T20:51:37.330 に答える