none
Kann Dynamisch erstellte ControlMaske nicht halten

    Allgemeine Diskussion

  • Hallo,

    ich habe eine Klasse erstellt in der Controls dynamisch erstellt werden sollen mit der Klassenmethode LoadMask().

    Das Programm ist eigentlich eine Suchmaske mit mehreren Suchfeldern mit denen ich dann nach Dokumenten suchen kann und die dann in einer Hitliste erscheinen sollen.

    Diese Methode tritt dann ein wenn ich eine Auswahl auf meiner vorhandenen Dropdownbox treffe.

    Sobald ich allerdings, irgendwas zb in die Textboxen eintrage und auf den Button suche drücke, sind die Werte wieder weg weil der jedesmal in PageLoad wieder reinspringt.

    Ich habe zwar eine zwischenlösung gefunden aber ich kann mir nicht vorstellen das es so der richtige ablauf sein kann. Ich kontrolliere ob PostBack zustande kam, wenn ja erstelle ich nochmal die klasse die ich vorher in Session gespeichert habe und lade sie dann wieder neu.

    So sieht die klasse aus, mit den Methoden. Ich hoffe mir kann jemand helfen

    public List<RetrievalFieldClass> _retrievalFields = new List<RetrievalFieldClass>();
    
            public void LoadMask(Panel searchMask, Button cancel, Button search)
            {
                string control = "";
                searchMask.Controls.Clear();
    
                try
                {
                    searchMask.Controls.Add(new LiteralControl("<table>"));
                    foreach (RetrievalFieldClass rf in _retrievalFields)
                    {
                        control = GetUserControl(rf);
                        searchMask.Controls.Add(new LiteralControl("<tr> <td>"));
    
                        rf._lblTempOperator1.ID                         = string.Format("TempOperator1_{0}", rf._orderNo);
                        rf._lblTempOperator1.Width                      = 60;
                        searchMask.Controls.Add(rf._lblTempOperator1);
                        searchMask.Controls.Add(new LiteralControl("</td> <td>"));
    
                        rf._lblLabel.ID                                 = string.Format("label_{0}", rf._orderNo);
                        rf._lblLabel.Width                              = 120;
                        searchMask.Controls.Add(rf._lblLabel);
                        searchMask.Controls.Add(new LiteralControl("</td> <td>"));
    
                        ((Control)rf._searchField1).ID                  = string.Format("searchField1_{0}", rf._orderNo);
                        SetSearchFieldProperties(ref rf._searchField1, rf);
                        searchMask.Controls.Add((Control)rf._searchField1);
                        searchMask.Controls.Add(new LiteralControl("</td> <td>"));
    
                        rf._dropDownTempOperator2.ID                    = string.Format("TempOperator2_{0}", rf._orderNo);
                        rf._dropDownTempOperator2.Width                 = 60; 
                        rf._dropDownTempOperator2.SelectedIndexChanged  += new EventHandler(_dropDownTempOperator2_SelectedIndexChanged);
                        rf._dropDownTempOperator2.AutoPostBack          = true;
                        searchMask.Controls.Add(rf._dropDownTempOperator2);
                        searchMask.Controls.Add(new LiteralControl("</td> <td>"));
    
                        ((Control)rf._searchField2).ID = string.Format("searchField2_{0}", rf._orderNo);
                        SetSearchFieldProperties(ref rf._searchField2, rf);
                        ((Control)rf._searchField2).Visible = false;
                        searchMask.Controls.Add((Control)rf._searchField2);
                        searchMask.Controls.Add(new LiteralControl("</td> </tr>"));  
                    }
                    cancel.Visible = true;
                    search.Visible = true;
                    searchMask.Controls.Add(new LiteralControl("</table>"));
                }
                catch
                { }
            }
    
            private void SetSearchFieldProperties(ref Control c, RetrievalFieldClass rf)
            {
                try
                {
                    if (c is TextBox)
                    {
                        ((TextBox)c).Width          = 155;
                        ((TextBox)c).TextChanged    += new EventHandler(textBox_TextChanged);
                        ((TextBox)c).AutoPostBack   = true; // ????
                    }
                    else
                    {
                        if (c is DropDownList)
                        {
                            ((DropDownList)c).Width                 = 160;
                            ((DropDownList)c).SelectedIndexChanged  += new EventHandler(dropDownLookUp_SelectedIndexChanged);
                            ((DropDownList)c).AutoPostBack          = true;
                            ((DropDownList)c).Items.Clear();
    
                            ((DropDownList)c).Items.Add("");
                            foreach (string str in rf._lookUpList.Values)   //set the lookup longname values in the DropDownList
                                ((DropDownList)c).Items.Add(str);
                        }
                        else
                        {
                            if (c is ASPxDateEdit)
                            {
                                ((ASPxDateEdit)c).Width         = 160;
                                ((ASPxDateEdit)c).AutoPostBack  = true; // ????
                            }
                            else
                            {
                                if (c is ASPxSpinEdit)
                                {
                                    ((ASPxSpinEdit)c).Width                                 = 160;
                                    ((ASPxSpinEdit)c).DecimalPlaces                         = 2;
                                    ((ASPxSpinEdit)c).Increment                             = 0.01m;
                                    ((ASPxSpinEdit)c).LargeIncrement                        = 1;
                                    ((ASPxSpinEdit)c).SpinButtons.ShowLargeIncrementButtons = true;
                                    ((ASPxSpinEdit)c).AutoPostBack                          = true; // ????
                                }
                            }
                        }
                    }
                }
                catch
                { }
            }

    Dienstag, 18. März 2014 08:07

Alle Antworten