结合ControlStyle更改背景颜色

时间:2017-01-29 11:23:54

标签: c# html asp.net

我有这个DetailsView组件,其中有几个像这样的TemplateField:

<asp:TemplateField HeaderText="Eindtijd:">
    <ItemTemplate>
        <asp:Label ID="Label1" runat="server" Text='<%# Bind("AVEITD") %>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox ID="edtAVEITD" runat="server" Font-Size="Small" Font-Names="Arial"></asp:TextBox>

    </EditItemTemplate>
    <ControlStyle BackColor="#e9e015" Width="35px" />
</asp:TemplateField>

这导致白色&#34;细胞&#34;在表格中,部分内容由可编辑的TextBox采用黄色背景拍摄,正是我想要的。

但是,在某些情况下,业务逻辑表明该单元格不可编辑。所以我将Enabled属性设置为false(工作正常),但我也想恢复为白色背景。这就是问题所在。

更改文本框的BackColor不起作用:

        tb = (TextBox) DetailsView2.FindControl("edtAVEITD");
        tb.Enabled = false;
        tb.BackColor = System.Drawing.Color.White;

因为显然模板字段的ControlStyle否决了文本框的BackColor,文本框仍然显示为黄色。 Templatefield没有ID,因此无法解析其属性...在这种情况下,如何更改文本框的背景?

1 个答案:

答案 0 :(得分:0)

解决方案非常简单。只需删除taht <ControlStyle BackColor="#e9e015" />并为控件使用内联BackColor="#e9e015"属性即可。这样,您只能为所需的项目设置背景颜色(标签和文本框可以有不同的背景颜色)

<asp:TemplateField HeaderText="AVEITD:">
  <ItemTemplate>
    <asp:Label ID="Label1" runat="server" Text='<%# Bind("AVEITD") %>' BackColor="#e9e015"></asp:Label>
  </ItemTemplate>

  <EditItemTemplate>
    <asp:TextBox ID="edtAVEITD" runat="server" Font-Size="Small" Font-Names="Arial" BackColor="#e9e015"></asp:TextBox>
  </EditItemTemplate>

  <ControlStyle Width="35px" /> <%-- remove: BackColor="#e9e015" --%>

</asp:TemplateField>

然后当您在代码隐藏中设置BackColor时,它将毫无问题地应用。

var tb = (TextBox) DetailsView2.FindControl("edtAVEITD");
tb.Enabled = false;
tb.BackColor = System.Drawing.Color.White;