我在网格视图中有一个下拉列表。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="GridView1_OnRowDataBound" EnableModelValidation="True" >
<Columns>
<asp:TemplateField HeaderText="Y_N">
<ItemTemplate>
<asp:Label ID="lblGetSub" runat="server" Text='<%# Eval("GetSub")%>' Visible = "false"></asp:Label>
<asp:DropDownList ID="DropDownList1" runat="server" OnSelectedIndexChanged="GridView1_OnSelectedIndexChanged" AutoPostBack="True" >
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
当我触发OnSelectedIndexChanged
时,我想在代码后面敲打下拉列表.backcolor。这是我的服务器端代码。
protected void GridView1_OnSelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
ddl.BackColor = System.Drawing.ColorTranslator.FromHtml("blue");
//ddl.Style["BackColor"] = "blue";
//ddl.Style.Add("backcolor", "blue");
//ddl.Attributes.CssStyle.Add("backcolor", "blue");
}
我在这个网站上得到了这个 4 解决方案。
ddl.BackColor = System.Drawing.ColorTranslator.FromHtml("blue");
ddl.Style["BackColor"] = "blue";
ddl.Style.Add("backcolor", "blue");
ddl.Attributes.CssStyle.Add("backcolor", "blue");
但只是ddl.BackColor = System.Drawing.ColorTranslator.FromHtml("blue");
工作正常。
有人可以告诉我为什么其余 3 个不起作用吗?
这是因为其他人直接设置或修改元素的 CSS style 属性,而 backcolor
不是有效的 CSS 属性 - 相反background-color
是。
第一个命令直接修改服务器端 DropdownList 对象的属性。然后,当控件呈现到浏览器时,这会影响 .NET 代码创建 HTML 元素的方式 - 此值将转换为浏览器可以理解的元素上的有效 CSS 样式属性。您可以通过浏览器的"查看源代码"功能检查页面的呈现源代码,以查看它如何获得输出。
如果您使用正确的 CSS 属性,其他命令可能会起作用,这里只是一个示例:
ddl.Attributes.CssStyle.Add("background-color", "blue");