2010-12-14 14 views
2

Ich werde damit beginnen zu sagen, ich bin kein ASC/C# Entwickler, dies ist für eine Hausaufgabe. (Ich hoffe, dass jemand versteht, was ich will: D, weil ich weiß nicht genau die Bedingungen)Asp.net Inhalt von einem Steuerelement abrufen

Ich habe Friends.aspx und Friends.aspx.cs

In Friends.aspx ich habe so etwas wie
<%@ Reference Control="~/FriendBox.ascx" %>
<div class="controlcontainer clearfix friendlist_containeritems" id="divFriends" runat="server"> </div>

In Friends.aspx.cs habe ich dieses divFriends zu füllen:


foreach (FBUser user in list){ 
     Control control = LoadControl("FriendBox.ascx"); 
     FriendBox myControl = (FriendBox)control; 
     myControl.user = user;     
     divFriends.Controls.Add(myControl);     
    } 

In meiner Seite eine eine Form haben, und divFriends in der Form ist. Ich habe einen Knopf in dieser Form. Wenn ich nur den Knopf drücke, wird meine Seite gesendet und ich kann Werte von ausgewählten Checkboxen abrufen. (Jedes Steuerelement enthält ein Kontrollkästchen)

Everithing funktionierte gut, bis ich versuchte, die Seite über Ajax (JQuery) einzureichen. Mein Problem ist, dass sogar die Checkboxen auf der Seite sind (ich kann sie sehen, wählen Sie sie aus), wenn ich eine Ajax abschicke, kann ich nicht auf Werte von Checkboxen zugreifen. Diese ist der Code, den ich verwenden, um Abrufen von Werten von Kontrollkästchen:

 
foreach(Control ctrl in divFriends.Controls) {
var friendBox = ctrl as FriendBox; //i can get here
if (friendBox != null) { //i never get here - because friendBox is allways null } }

How can i make the content from divFriends accesible when i submit my form with Jquery? Thanks in advance.

Edit: here is the javascript i use


$(document).ready(function() { 
     $('.big').click(function() { 
      //.big is my button 
      $('.big').attr('disabled', true);

 var form_form = $(document).find('form'); 
     $.ajax({ 
      type: 'POST', 
      url: form_form.attr('action'), 
      data: form_form.serialize(), 
      dataType: 'json', 
      success: function (data) {      
       console.log('success'); 
      }, 
      complete: function (XMLHttpRequest, textStatus) { 
       $('.big').attr('disabled', false); 
      } 
     }); 
     return false; 
    }); 

});


Die Javascript funktioniert, weil ich Daten senden können, und ich kann Daten empfangen zurück (json), wenn ich die Daten ansehen submited i dont haben die Checkboxen von divFriends.

+0

Können Sie das Javascript, das das Formular einreicht, bitte anzeigen? – Josh

+0

Das ist eine ziemlich komplizierte Hausaufgabe. :/ – Greg

+2

Wo in Ihrem Code-Behind ist diese foreach-Schleife, die Steuerelemente hinzufügt? Welches Ereignis, welche Logik? Gibt es auch einen bestimmten Grund, warum Sie Steuerelemente dynamisch so hinzufügen, anstatt deklarativ (Schreibweise?) Mit einem Repeater/anderen datengebundenen Steuerelement? – RichardW1001

Antwort

2

Das Problem scheint asp.net Zustand Management Problem sein. Sie fügen FriendBox nur einmal hinzu (ich nehme an, wahrscheinlich mit einer wenn nicht page.ispostback Art von thign), und nicht auf jeder Seite getroffen. Da FriendBox dynamisch hinzugefügt wird, überlebt es kein Postback und existiert daher nicht, wenn Sie versuchen, es zu lesen.

Sie sollten FriendBox jedes Mal hinzufügen, wenn die Seite geladen wird, auf Init, bevor Viewstate geladen wird. Durch Hinzufügen der Steuerelemente während der Initialisierung kann ViewState die Werte verfolgen und wird das Problem wahrscheinlich beheben.

Verwandte Themen