我制作了一个用户控件(.ascx),其中包含一个包含六个按钮的div。 它有一个字符串属性“selectedButton”,其中包含其中一个按钮的ID值。
我想要做的是能够在页面加载时更改ID对应于selectedButton属性的按钮的背景颜色。
现在我正在ascx.cs中对selectedButton属性的值进行切换,如下所示:
switch (selectedButton)
{
case "Button1":
Button1.BackColor = System.Drawing.ColorTranslator.FromHtml("#00CC00");
break;
//etc...
}
它有效,但这似乎不是很有效,如果我有更多的按钮,它也不会动态。
我已经尝试将其放入ascx源:
<script type="text/javascript">
var sb = document.getElementById("<%=this.selectedButton %>");
sb.BackColor = System.Drawing.ColorTranslator.FromHtml("#00CC00");
</script>
但没有任何结果。
提前致谢。
答案 0 :(得分:1)
答案取决于selectedButton
包含的内容。如果它包含服务器端ID(并且在您的代码片段中似乎是这种情况),那么您可以在后面的代码中使用FindControl
:
Button button = this.FindControl(selectedButton) as Button;
if (button != null)
{
button.BackColor = System.Drawing.ColorTranslator.FromHtml("#00CC00");
}
但是,如果selectedButton
包含客户端ID(ASP.NET为每个控件生成的ID),那么您应该使用一些javascript:
<script type="text/javascript">
var sb = document.getElementById("<%= this.selectedButton %>");
sb.style['background-color'] = '#00CC00';
</script>
答案 1 :(得分:0)
您正在尝试将服务器端与客户端代码混合使用。那不行。
如果您希望在没有往返回服务器的客户端上更改此项,请使用纯javascript。这意味着您无法在此处使用this.selectedButton
,System.Drawing.ColorTranslator
或任何其他C#代码。
使用纯粹的javascript解决方案来改变颜色,你会发现很多如何做到这一点。
答案 2 :(得分:0)
试试这个:
<script type="text/javascript">
var sb = document.getElementById("<%=this.Button1.ClientID %>");
sb.style.backgroundColor = "<%= System.Drawing.ColorTranslator.FromHtml("#00CC00") %>)";
</script>
在此处找到:http://forums.asp.net/t/1320687.aspx/1
但是这篇SO帖子正是我真正想要的:Passing ASP.NET client IDs in to a javascript function
他们使用uniqueID但是从内存中,ClientID才是正确的解决方案。
答案 3 :(得分:0)
使用clientClick调用方法来更改颜色并传递clientId值,使用.style.background = color;使用javascript,这里有更多信息How do I change the background color with JavaScript?