2012-03-29 11 views
0

Kann eine RadListView-Datenquelle mit Ajax gebunden/neu gebunden werden? Was ich versuche, ist eine Art Forum zu erstellen. Ein ListView ist in einem anderen Listenansicht verschachtelt. Die äußere Listenansicht wird beim Laden der Seite geladen und zeigt alle Betreff-Header an, und die Ansicht der inneren Liste wird erst dann gebunden, wenn auf die Überschrift geklickt wird. Dann werde ich jQuery verwenden, um die Details unter der Überschrift zu öffnen, und lade THAT ListView mit ajax. ist das möglich und wie? Oder gibt es einen anderen Weg, diesen Effekt zu erreichen? Vielen Dank.Verwenden Sie Ajax zum Binden/Rebind einer Listview-Datenquelle?

Antwort

0

Sie können die äußere Liste in eine UpdatePanel umbrechen und einen OnClick Handler der Betreffzeile zuweisen. Wenn auf die Betreffzeile geklickt wird, wird ein asynchrones Postback ausgeführt, und Sie können die innere Liste im Click-Ereignishandler binden.

Auf die eine oder andere Weise müssen Sie zum Code-Behind gelangen. Wenn Sie jQuery verwenden möchten, können Sie Ereignisse anhängen an den Header klicken und rufen __doPostBack im Handler, wie folgt aus:

$("#<%=ListView1.ClientID%> .header").click(function(){ 
    __doPostBack($(this).attr("id"), ""); 
}); 

Wenn Sie mit diesem Ansatz gehen, werden Sie nur die RaisePostBackEvent in der außer Kraft setzen müssen Code-Behind, und verwenden Sie ein wenig Logik, um in die innere Liste zu bohren.

0

Der einfache Weg, wenn Sie ein PostBack nicht tun, wäre, verschachtelte ListViews zu verdrahten, und den Header-Hook zum ItemCommand-Ereignis und binden Sie die entsprechende RadListView, die Sie brauchen, und andere ausblenden. Sie könnten den ViewState für diese Steuerelemente möglicherweise deaktivieren, um die Größe zu verringern, da Sie nur die aktuell ausgewählten Elemente ListView anzeigen würden, wenn Sie keine Paging- oder Sortiervorgänge durchführen.

Für eine schnellere Postbacks können Sie auf Client-Seite Databinding für RadListView loook

http://demos.telerik.com/aspnet-ajax/listview/examples/client/programmaticdatabinding/defaultcs.aspx

Sie würden eine Funktion erzeugen, dass Sie die Listview die ClientID senden kann, sowie die Außen div DataBind (wenn Sie muss man) beim Anklicken der Kopfzeile anzeigen.

Die Funktion würde dann das ListView finden, den äußeren Container anzeigen und es mit Daten verknüpfen. Sie könnten möglicherweise auch Code einschließen, der das gegenwärtig sichtbare div zusammenfalten würde, wenn Sie diese Funktionalität wünschen. Eine globale Variable, die die ID des vorherigen Div speichert, wäre ein einfacher Weg, um zu arbeiten.

Verwandte Themen