我有一个名为Button1
的按钮,我有以下代码隐藏:
string CS = ConfigurationManager.ConnectionStrings["EasyRozMoney_ConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
con.Open();
SqlCommand cmd = new SqlCommand("spTaskPerformed", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@TaskId", lblTaskId.Text);
cmd.Parameters.AddWithValue("@Email", Session["Email"].ToString());
cmd.ExecuteNonQuery();
Button1.BackColor = Color.Red;
Button1.Enabled = false;
lblTaskPerformed.Text = "Task Completed Successfully.";
}
其他一切正常。按钮也会被禁用,但它不会改变背景颜色。有什么建议吗?
答案 0 :(得分:3)
按钮上的内嵌样式会阻止背景颜色显示。
原因如下:
考虑以下ASPX代码:
<asp:Button runat="server" ID="Button1" Text="Click Me!"
style="background-color: yellow;"/>
这将呈现以下HTML:
<input type="submit" id="MainContent_Button1" value="Click Me!"
style="background-color: yellow;">
当我们在后面的代码中添加BackColor
时,将内嵌样式预先添加到元素的样式属性中。这产生了这个HTML:
<input type="submit" id="MainContent_Button1" value="Click Me!"
style="background-color:Red;background-color: yellow;">
因此它会插入红色,但原始颜色会立即覆盖它。
要解决此问题,请在ASPX中使用BackColor
属性,而不是使用background-color
内联样式标记。像这样:
<asp:Button ID="Button1" runat="server" Text="Submit"
BackColor="#CC6600" style="background-color:#CC6600;"/>
ASP.NET将知道在应用新颜色时如何正确覆盖它。
如果 在JavaScript中执行此操作,您可以使用RegisterStartupScript
向浏览器发送动态javascript代码,但我怀疑还有其他问题。
var script = "document.getElementById('" + Button1.ClientID + "').style.backgroundColor = 'red';";
ScriptManager.RegisterStartupScript(this, typeof(Page), "changecolor", script, true);
答案 1 :(得分:0)
你可以试试这个。它可能对你有帮助。我面临同样的问题,但我想改变文字。您可以使用此更改颜色。
Button1.Invoke(new System.Action(() => Button1.BackColor = Color.Red));
答案 2 :(得分:0)
这可能会有所帮助:
JavaScript的:
function changeColor(e) {
e.style.color = "red";
return false;
}
ASPX:
<asp:LinkButton ID="LinkButton1" OnClientClick="return changeColor(this);"
runat="server">LinkButton</asp:LinkButton>