我如何在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>
但没有任何结果。
答案取决于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是正确的解决方案。