2009-06-07 15 views
1

Ich habe eine asp.net page.I von Server eine RadioButton- Liste am Erzeugen (eine asp.net Seite) und es zu einem DIV laden Javascript und ajax.Now i mit Ich möchte die RadioButton-Liste in meiner Codebind-Datei lesen. Der VS Intelisense zeigt jedoch nicht den Kontrollnamen an. Kann mir jemand sagen, wie man es liest?ASP.NET: Steuerelemente dynamisch generierte kommt nicht in Code-Behind

Mein Code für

System.IO.StringWriter swriter=new System.IO.StringWriter(); 
    HtmlTextWriter textWriter = new HtmlTextWriter(swriter); 

    string strPriceOutput=""; 
    RadioButtonList iRadioBtnListPrices = new RadioButtonList(); 
    iRadioBtnListPrices.RepeatDirection = RepeatDirection.Vertical; 
    iRadioBtnListPrices.CssClass = "priceList"; 
    string strRadios = ""; 
    if ((this.Vendor != null)) 
    { 
     foreach (VendorQuoteType vendorQuoteType in Vendor.VendorQuoteTypeCollection) 
     {   
      iRadioBtnListPrices.Items.Add(new ListItem(" $ " + totalPrice.ToString()" ,vendorID.ToString())); 
     } 

    } 
    iRadioBtnListPrices.RenderControl(textWriter); 
    strPriceOutput = swriter.ToString(); 

in Server-Seite Optionsfeld Liste zu erzeugen und ich das lese in meinem Javascript Ajax und es als innere HTML eines div zuweisen.

Wie diese RadioButton- Liste in Codebehind lesen?

Antwort

1

Sie müssen wahrscheinlich mit .FindControl() finden und es zu einem RadioButtonList gießen. Wenn Sie es zum Inhalt eines Panel oder eines anderen Steuerelements hinzufügen, das sich dort einschränkt, wo Sie danach suchen müssen (vielleicht genügt sogar ein <div id="myDiv" runat="server">, ich weiß nicht ...), können Sie folgendes verwenden:

RadioButtonList theList = 
    (RadioButtonList)thePanel.FindControl("theIdOfTheRadioButtonList"); 

theList.WillNowGiveYouIntellisense(); 
0

1. einmal, warum sind Sie so ein komisches Verfahren unter Verwendung eines Radiobutton Liste Rendering? Ich denke, es gibt viel bessere Möglichkeiten, um das zu erreichen, was Sie brauchen. Sehen Sie sich zum Beispiel den RadioButtonList-Datenbindungsmechanismus an: here. Ich würde die Radiobutton-Liste zu der Seite hinzufügen und es mit dem Datenbindungsmechanismus oder in der Schleife tun, wie Sie es getan haben. Dann würde ich die Liste verstecken/zeigen (myRadioButtonList.Visible = false/true) abhängig von einigen Bedingungen.

Der Grund, warum Sie wahrscheinlich auf dem Code-Behind sehen Ihre Radiobutton Liste nicht weiß, ist, weil Sie es dynamisch zur Laufzeit erstellen. Intellisense zeigt Ihnen nur die Elemente an, die Sie in Ihren aspx/ascx-Code platziert haben und für die der Designer entsprechende Variablen in der Designer-Datei erstellt hat, die an Ihr Seiten-/Benutzer-Steuerelement angehängt ist. Wie kann es sonst abgerufen werden?

+0

Ja, es ist in Server-Seite zur Laufzeit erstellt – Shyju

+0

Ja ich sah, dass, aber warum hast du das getan? Ich bin ein Prof. Webentwickler und eigentlich muss ich das sehr selten machen. Können Sie mir den Grund dafür erklären? – Juri

1

Mehrere Möglichkeiten, um Ihren Code zu verbessern:

  • ein Steuerelement Radiobuttonlist in aspx erstellen, und es manuell in Page_Load füllen

so wird IntelliSense die Steuer Namen finden

oder

  • fügen Sie die dynamisch erstellt Ra dioButtonList als Kind eines bestehenden Steuer

  • stellen Sie die ID-Eigenschaft des Radiobuttonlist

  • Verwendung Findcontrol mit der gewählten ID

Render Aufruf wird in diesen Lösungen nicht erforderlich.

Verwandte Themen