无法在后面的代码(.net)中更改Dropdownlist.backcolor

时间:2018-01-09 14:35:55

标签: c# asp.net

我在gridview中有一个下拉列表。

  <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时,我想在后面的代码中使用dropdownlist.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个没有用?

1 个答案:

答案 0 :(得分:1)

这是因为其他人直接设置或修改元素的CSS样式属性,而backcolor不是有效的CSS属性 - 而是background-color

第一个命令直接修改服务器端DropdownList对象的属性。然后,当控件呈现给浏览器时,这会影响.NET代码创建HTML元素的方式 - 此值将转换为浏览器可以理解的元素上的有效CSS样式属性。您可以通过浏览器的“查看源”功能检查页面的呈现源代码,看看它是如何输出的。

如果使用正确的CSS属性,其他命令可能会起作用,例如:

ddl.Attributes.CssStyle.Add("background-color", "blue");