如何在Web应用程序中创建Checkbox ReadOnly

时间:2016-08-24 22:38:41

标签: c# asp.net checkbox

我有一个gridview,每行都有一个复选框。进入编辑模式时,可以选中/取消选中复选框;但我不希望复选框在任何其他模式下都可以编辑。用户很容易被复选框弄糊涂,这些复选框不能反映保存在数据库中的实际值。

<asp:CheckBox id="checkboxCustomerRequired" runat="server" Checked='<%# Bind("CustomerRequired") %>' Enabled="false" CssClass="Check"/>

我尝试过的可能的解决方法:
1)设置enabled = false

这实现了目标,但灰色的盒子是丑陋的,并且无法一目了然地捕获它的状态。因此,我尝试将OnRowDataBound事件中的框的前景颜色设置为白色,但它不起作用。 Checkbox.ForeColor = System.Drawing.Color.White;

2)使用OnCheckedChange事件

想法是在更改后将其设置为状态。问题是我在gridview中移动,我无法弄清楚如何建立Checkbox Click发生的行。在给定的情况下,这似乎不可能。

有什么建议吗? 马丁

3 个答案:

答案 0 :(得分:9)

您可以通过在false客户端事件中返回onclick来使CheckBox成为只读:

<asp:CheckBox ID="checkboxCustomerRequired" runat="server" onclick="return false;" ... />

答案 1 :(得分:0)

您是否尝试过使用CSS对禁用状态进行搜索,因此它已被禁用但仍然看起来像您希望的那样?

input[type=checkbox][disabled]{
  outline:1px solid red; // or whatever
}

答案 2 :(得分:0)

禁用的复选框外观由浏览器控制。不建议篡改它,因为它在每个浏览器中看起来都不同;外观用户可能已经熟悉了。请参阅下面的比较,了解每个浏览器和操作系统将如何显示禁用的复选框。

enter image description here

如果您真的要统一复选框的样式,可以创建一个样式表来覆盖各种属性(背景,边框等)并将它们应用到:disabled状态。

input[type=checkbox]:disabled {
  -webkit-appearance: none; /* disable chrome and safari styles */
  width: 12px;
  height: 12px;
  background: white;
  border: solid 1px black;
  vertical-align: middle;
}
<input type="checkbox" disabled>
<label>This is a checkbox</label>