2012-04-09 14 views
0

Ich habe ein benutzerdefiniertes Web-Steuerelement für die Auswahl Datum erstellt. Es besteht aus 3 Dropdown-Listen. In ihrem selectedIndexChanged Ereignis überprüfe ich das Datum wie folgt.Postback programmgesteuert senden

protected void SelectedIndexChanged(object sender, EventArgs e) 
{ 
    DropDownList ddList = sender as DropDownList; 
    if (ddlDays.SelectedIndex > 0 && ddlMonths.SelectedIndex > 0 && ddlYears.SelectedIndex > 0) 
    { 
     int day = ddlDays.SelectedIndex; 
     int month = ddlMonths.SelectedIndex; 
     int year = int.Parse(ddlMonths.SelectedValue); 
     try 
     { 
      DateTime date = new DateTime(year, month, day); 
     } 
     catch 
     { 

      if (OnDateNotValid != null) 
       OnDateNotValid("Entered date is not valid"); 
      //Here I want to invoke PosBack on the page where I use this control 
     } 
    } 
} 

ich tatsächlich den Warnhinweis Text erhalten auf die Fehlerbeschreibung zu ändern, aber da es in der Form kein Postback ist die Kennzeichnung nicht. Hier sind einige Überlegungen: 1. Ich habe AutoPostBack Eigenschaft der Dropdown-Listen auf false gesetzt, da das erneute Laden der Seite jedes Mal nach dem Ändern des Elementindex ist frustrierend. 2. Ich habe versucht, einen Knopf auf das Steuerelement zu setzen und sein onbuttonclick-Ereignis aufzurufen, aber es hat nicht funktioniert.

Jetzt muss ich ein Postback an die Seite senden, wenn mein Steuerelement erkennt, dass das Datum nicht gültig ist.

P.S. Wenn ich am Anfang der SelectedIndexChanged-Methode einen Haltepunkt festlege und den Index einer der Dropdown-Listen ändere, stoppt der Debugger nicht an diesem Haltepunkt. Ich habe dieser Methode das gesamte SelectedIndexChanged-Ereignis hinzugefügt.

+0

Verwenden Update-Panel für dieses und Einzelstücken Update setzen. –

+0

http://stackoverflow.com/questions/3591634/how-to-use-dopostback –

+0

Werden Update-Panels noch immer verwendet? Ich benutze diese vor Jahren nicht mehr, weil sie aufgebläht sind. Habe viele Projekte gesehen, die diese langsam benutzen, und für mich scheint es ein "einfacher" Weg, Ajax-Anwendungen zu entwickeln. – mickyjtwin

Antwort

1

u kann über JavaScript Postback

Verwendung __doPostback('ButtonRenderedId','');

wenn ur Autopostback = "true" javascript:setTimeout('__doPostBack(\'DropDownList1\',\'\')', 0) in HTML gerendert.

bedeutet indirekt Seitenpostback auf jedem Index durch Javascript geändert.

Wenn Ihr Autopostback falsch ist, können Sie Postback Manully tun.

mehr zu wissen klicken Sie unten How to use __doPostBack()