我有这个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,因此无法解析其属性...在这种情况下,如何更改文本框的背景?
答案 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;