2016-07-15 12 views
0

Ich ändere zurück Farbe einer Combo-Box, wenn es einen anderen Wert als den ersten Wert hat. (selectedindex = 0)Behalten Sie die Kontrolle zurück Farbe nach Postback

<asp:DropDownList ID="ddlActive" runat="server" onchange="ChangeBackColor(this);"> 

js, um die Farbe zu ändern;

function ChangeBackColor(source) { 
 
      if (source.selectedIndex > 0) 
 
       source.style.backgroundColor = "LightGreen"; 
 
      else 
 
       source.style.backgroundColor = "White"; 
 
     }

Auf dieser Seite befindet sich eine Schaltfläche, klicken Sie einmal auf, dass sie die Seite neu geladen. Mit ViewStates konnte ich den Wert erhalten.

<asp:Button ID="btnUpdate" runat="server" Text="Update" CssClass="btn" 
                OnClick="btnUpdate_Click" /> 

Aber zurück Farbe ist zurück zu Standard (weiß), ich muss das auch zu bewahren. Was kann ich dafür tun?

Antwort

1

Fügen Sie diese auf den Körper tag:

<body onload="ChangeBackColor(document.getElementById(dropdownID))"> 

das tun sollten, was Sie wollen.

Wenn Sie jQuery verwenden, tun:

<script> 
    jQuery(function(){ 
     ChangeBackColor(jQuery('#dropdownID')); 
    }); 
</script> 
+0

zu wickeln Wenn es mehr als eine Combo auf der Seite? –

+1

In diesem Fall können Sie ihnen einen gemeinsamen CSS-Klassennamen geben und die folgende jQuery verwenden, um sie zu erhalten: 'jQuery ('. Common_class_name'). Jeder (function() {ChangeBackColor (this)});' – kennasoft

1

überprüfen Sie in Ihrem Seitenladeereignis im nachfolgenden Code den ausgewählten Wert Ihrer Dropdown-Liste und setzen Sie ihn unter bestimmten Bedingungen auf rot.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(ddl.selectedvalue != "whatever") 
     ddl.BackColor = function_that_return_a_color(); 
} 
1

In Ihrem btnUpdate_Click (oder in page_preRender) Handler hinzufügen Linie.

ScriptManager.RegisterStartupScript(this, this.GetType(), "ddlActiveColor", 
    "ChangeBackColor(document.getElementById('" + ddlActive.ClientID + "'));", true); 

Wenn Sie es in page_preRender tun, dann ist es eine gute Idee, diese Zeichenfolge in

if(page.IsPostBack({ 
    //ScriptManager... 
} 
Verwandte Themen