ich eine <asp:DropDownList>
innerhalb eines <asp:TemplateField>
in einem Gridview haben:Dropdown innerhalb Gridview wird beibehalten nicht die Hintergrundfarbe, wenn Postbacks
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="DatosTablaHandoff">
<Columns>
<asp:TemplateField HeaderText="STATUS">
<ItemTemplate>
<asp:DropDownList ID="DropDownGV" runat="server" onchange="SetDropDownListColor(this);">
<asp:ListItem>Select...</asp:ListItem>
<asp:ListItem>Complete</asp:ListItem>
<asp:ListItem>Running</asp:ListItem>
<asp:ListItem>Waiting in SEV 1</asp:ListItem>
<asp:ListItem>No Batch</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Und ich habe ein Skript in js ein „Element Hintergrundfarbe“, je nach auf dem Münster Gewählter Artikel:
function SetDropDownListColor(ddl) {
for (var i = 0; i < ddl.options.length; i++) {
if (ddl.options[i].selected) {
switch (i) {
case 0:
ddl.style.backgroundColor = 'White';
return;
case 1:
ddl.style.backgroundColor = 'lightgreen';
return;
case 2:
ddl.style.backgroundColor = 'Yellow';
return;
case 3:
ddl.style.backgroundColor = 'orangered';
return;
case 4:
ddl.style.backgroundColor = 'Grey';
return;
}
}
}
}
Es funktioniert alles in Ordnung. Aber beim Postback verschwindet die Farbe. Der DropDown in jeder Zeile bleibt mit dem Selected Value wie ich will, aber mit Hintergrundfarbe Weiß.
ich dieses andere Skript (außerhalb der Funktion), um die Farbe, wenn Postbacks zu „retten“, aber es funktioniert nur, wenn die Dropdown außerhalb des Gridview ist:
window.addEventListener('load', function() { SetDropDownListColor(document.getElementById('<%= DropDownList1.ClientID %>')); }, false);
Das Problem besteht darin, dass Sie versuchen, das Load-Ereignis an das Drop-down der Vorlage zu binden, das nicht existiert. Wie zgood sagt, müssen Sie eine Möglichkeit bereitstellen, die verschiedenen Dropdown-Listen zu identifizieren. Eine Klasse ist der typische und einfachste Weg, dies zu tun. –
Danke! es ist nicht 100% korrekt, weil ich einige Änderungen vornehmen musste, aber es hilft sehr! Das funktioniert bei mir: window.addEventListener ('laden', funktion() { var dropdowns = neues Array(); var gridview = document.getElementById ('<% = GridView1.ClientID%>'); Aufklappmenü = gridview.getElementsByTagName ('select'); for (var i = 0; i