0

我制作了一个用户控件 (.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>

但没有任何结果。

提前致谢。

4

4 回答 4

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>
于 2013-03-14T15:55:54.203 回答
0

您正在尝试将服务器端与客户端代码混合。那是行不通的。

如果您希望在客户端更改此内容而不需要往返服务器,请使用纯 JavaScript。这意味着您不能在此处使用this.selectedButton,System.Drawing.ColorTranslator或任何其他 C# 代码。

改用纯 JavaScript 解决方案来更改颜色,您会发现很多关于如何做到这一点的信息。

于 2013-03-14T15:50:03.937 回答
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 是正确的解决方案。

于 2013-03-14T15:50:50.267 回答
0

使用 clientClick 调用更改颜色并传递 clientId 值的方法,其中 .style.background = color; 使用 javascript,这里有更多信息如何使用 JavaScript 更改背景颜色?

于 2013-03-14T15:52:31.217 回答