我如何在ASP.NET的用户控件中使用其ID获得按钮

本文关键字:ID 按钮 控件 ASP NET 用户 | 更新日期: 2023-09-27 18:03:50

我制作了一个用户控件(.ascx),它由一个包含六个按钮的div组成。它有一个字符串属性"selectedButton",其中包含一个按钮的ID值。

我想做的是能够改变按钮的背景色,其ID对应于selectedButton属性,当页面加载

现在我正在asx .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>

但没有任何结果。

我如何在ASP.NET的用户控件中使用其ID获得按钮

答案取决于selectedButton包含什么。如果它包含服务器端ID(从您的代码片段来看似乎是这样),那么您可以在以下代码中使用FindControl:

Button button = this.FindControl(selectedButton) as Button;
if (button != null)
{
    button.BackColor = System.Drawing.ColorTranslator.FromHtml("#00CC00");
}

然而,如果selectedButton包含客户端ID (ASP。. NET生成每个控件),然后你应该使用一些javascript:

<script type="text/javascript">
    var sb = document.getElementById("<%= this.selectedButton %>");
    sb.style['background-color'] = '#00CC00';
</script>

您正在尝试混合服务器端和客户端代码。那不行。

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

使用纯javascript解决方案来改变颜色,你会发现很多关于如何做到这一点。

使用clientClick调用一个方法来更改颜色并传递clientId值,使用.style。Background = color;如何使用javascript更改背景颜色?

try this:

<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

但是这个帖子是我实际上在寻找的:通过ASP。. NET客户端id到javascript函数

他们使用唯一id,但从内存中,ClientID是正确的解决方案。