1

サーバー コントロールには、クライアントに動的に入力される DevExpress ASPxClientListBoxがあります。サーバーはそれについて何も知る必要はありませんが、サーバー上で初期化されます。通常、このサーバー コントロールには問題はありません...ただし、ASPxCallbackPanel に配置すると、最初のページの読み込みで機能しますが、コールバックの後、ListBox のクライアント側の選択されたインデックスの変更イベントが発生すると、選択されたアイテムキーまたは「テキスト」はそのままですが、値は失われ「未定義」です。

補足として...コールバックの後、ListBoxの最初の項目を選択できません....つまり、マウスオーバーまたはマウスクリックで最初の項目が強調表示されないということです。

少し関連性はあるが必要なものではないリンク:

http://www.devexpress.com/Support/Center/p/Q312536.aspx

「最初のアイテムを選択できない」問題について話している別のリンクがあり、コントロール階層が確立される前にアイテムを追加することに関係があると述べたので、解決策は ListBox クライアント側の Init イベントにアイテムを追加することでしたpage_load イベントとは対照的です。ListBox が初期化された後にアイテムを追加しているので、これを解決策とは見なしません...とにかく今はリンクを見つけることができません...

編集: 他のリンクをもう一度見つけました: http://www.devexpress.com/Support/Center/p/Q367021.aspx

4

1 に答える 1

0

問題の一部は、提供した 2 番目のリンクで解決されています。何が起こるかというと...

...この関数は、ページが読み込まれるとすぐに呼び出されます。ただし、ASPxListBox 階層はまだ準備ができていません。getList 関数を呼び出す正しい方法は、ASPxClientListBox イベントを処理することです...

簡単に言うと、次のようなものは、たとえばロード時に実行すると正しく実行されません...

yourListbox.AddItem("Test1"); 
yourListbox.AddItem("Test2"); 
yourListbox.AddItem("Test3"); 
yourListbox.AddItem("Test4");

...しかし、以下はうまくいくはずです...

s.Properties.ClientSideEvents.Init = 
@"function(s, e) { yourListbox.AddItem('Test1'); yourListbox.AddItem('Test2'); yourListbox.AddItem('Test3'); yourListbox.AddItem('Test4'); }";

最初の選択項目の問題は、同じまたは同様の理由で発生した可能性があると思います。

于 2014-08-26T07:27:54.483 に答える