1

次の RadListBox があります。

   <telerik:RadListBox ID="AttachmentsRadListBox"  CheckBoxes ="true" runat="server" />

これは RadWindow に配置されているため、RadWidnow が表示されたときにのみ呼び出される次のコードを使用してデータを取り込みます。

AttachmentsRadListBox.DataSource = AttachDT
AttachmentsRadListBox.DataTextField = "DocumentPath"
AttachmentsRadListBox.DataValueField = "DocumentID"
AttachmentsRadListBox.DataBind()
For Each item As RadListBoxItem In AttachmentsRadListBox.Items
     item.Checked = True
Next

これまでのところ、RadListBox にデータが入力され、すべての項目がチェックされています。

ウィンドウを閉じる前に押すと、RadWindow に [保存] ボタンが表示されるようになりました。しかし、アイテムを読み取るためのすべての努力は失敗しました。たとえば、[保存] ボタンをクリックすると、次のようになります。

Dim test As Integer = AttachmentsRadListBox.Items.Count  // THIS IS ZERO
For Each item As RadListBoxItem In AttachmentsRadListBox.Items  // THERE ARE NO ITEMS
   If Not item.Checked Then
        Dim DocumentIDToDelete As Integer = item.Value
   End If
Next

コードの最後の部分が期待どおりに動作しないのはなぜですか? AttachmentsRadListBox は、ポストバックによって再度バインドされていません。それが制限されるのは、RadWindow が表示されるときだけです。次に、RadWindow の [保存] ボタンは明らかにポストバックを作成しますが、その時点で AttachmentsRadListBox にアイテムが含まれていない理由がわかりません。

4

1 に答える 1

1

AttachmentsRadListBox を動的に作成したので、その後のポストバックで再作成しますか? 最終的にはサーバー コントロールであるため、必ず再作成する必要があります。再作成しないと、その後のポストバック時に ASP によって破棄されるためです。RadWindow の ContentTemplate でコントロールにアクセスする方法を確認するには、次の記事も参照してください: http://www.telerik.com/help/aspnet-ajax/window-controls-container.html

于 2013-08-06T14:00:25.593 に答える