我在 ASP.NET 程序中使用 ListBox 控件,但是 Enabled 属性不起作用。示例代码如下所示:<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TestForm.aspx.cs" Inherits="WebAppTester.TestForm" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>测试页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ListBox ID="lstTest" Rows="16" runat="server" />
</div>
</form>
</body>
</html>
using System;
using System.Web.UI;namespace WebAppTester
{
public partial class TestForm : Page
{
protected void Page_Load(object sender, EventArgs e)
{
lstTest.DataSource = Enum.GetNames(typeof(ConsoleColor));
lstTest.SelectedIndex = 4;
lstTest.DataBind();
lstTest.Enabled = false;
}
}
}在上述代码中,我把 ListBox 控件的 Enabled 属设为 false,用于禁用该控件,不让用户选择该 ListBox 中的项目。
但是这没有起到作用,该 ListBox 还是可以进行选择。
请问这是怎么回事?应该如何解决?
谢谢!
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>测试页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ListBox ID="lstTest" Rows="16" runat="server" />
</div>
</form>
</body>
</html>
using System;
using System.Web.UI;namespace WebAppTester
{
public partial class TestForm : Page
{
protected void Page_Load(object sender, EventArgs e)
{
lstTest.DataSource = Enum.GetNames(typeof(ConsoleColor));
lstTest.SelectedIndex = 4;
lstTest.DataBind();
lstTest.Enabled = false;
}
}
}在上述代码中,我把 ListBox 控件的 Enabled 属设为 false,用于禁用该控件,不让用户选择该 ListBox 中的项目。
但是这没有起到作用,该 ListBox 还是可以进行选择。
请问这是怎么回事?应该如何解决?
谢谢!
解决方案 »
- Jquer 弹出窗口中控件使用问题。
- 谁知道这网站的这个功能怎么实现~!!!!
- 关于asp.net操作Excel问题,散分!祝快出生的女儿健康。
- 在gridview的RowCommand事件中改变button控件的text的值
- .net中如何定义datetime时间为服务器时间
- 请问怎样在GridView进入编辑模式时自定义绑定数据
- asp.net技术信息交流区!最新发现。
- 请问怎样用.net发送和接收xml格式的数据
- 请问那位仁兄有汉化的.net的MSDN能让我下载,小妹感恩不尽 !
- 请问一个页面上的ascx能互相引用各自的对象吗?
- 多语言系统开发问题请教
- 为什么我的Session传递不到另一个页面的?
<asp:ListBox ID="ListBox1" runat="server" Enabled=false Width="126px">
<asp:ListItem Value="sss"></asp:ListItem>
<asp:ListItem Value="sss"></asp:ListItem>
<asp:ListItem Value="sssff"></asp:ListItem>
<asp:ListItem></asp:ListItem>
</asp:ListBox>
可以,
你把
lstTest.DataSource = Enum.GetNames(typeof(ConsoleColor));
lstTest.SelectedIndex = 4;
lstTest.DataBind();
换成遍历添加试试。
对了,我的运行环境是 ASP.NET 4,在 IE6、IE8、IE9 和 Chrome 17 浏览器上都试过了,结果都一样。
<option>123</option>
<option>123</option>
<option>123</option>
<option>123</option>
</select>
这个应该没问题啊4.0也不会有问题。。ListBox最后生成出来就是个SELECT标签而己你用JS设置它的disabled="disabled"看看
<asp:ListItem >aaaa</asp:ListItem>
<asp:ListItem >bbbb</asp:ListItem>
</asp:ListBox>
我查看了一下我的示例的页面源代码,如下所示:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>测试页</title></head>
<body>
<form method="post" action="TestForm.aspx" id="form1">
<div class="aspNetHidden"><input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/w...A==" /></div>
<div class="aspNetHidden"><input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/w...N6" /></div>
<div>
<select size="16" name="lstTest" id="lstTest" class="aspNetDisabled">
<option value="Black">Black</option>
<option value="DarkBlue">DarkBlue</option>
<option value="DarkGreen">DarkGreen</option>
<option value="DarkCyan">DarkCyan</option>
<option selected="selected" value="DarkRed">DarkRed</option>
<option value="DarkMagenta">DarkMagenta</option>
<option value="DarkYellow">DarkYellow</option>
<option value="Gray">Gray</option>
<option value="DarkGray">DarkGray</option>
<option value="Blue">Blue</option>
<option value="Green">Green</option>
<option value="Cyan">Cyan</option>
<option value="Red">Red</option>
<option value="Magenta">Magenta</option>
<option value="Yellow">Yellow</option>
<option value="White">White</option>
</select>
</div>
</form>
</body>
</html>看来是这个 class="aspNetDisabled" 没有起到应有的作用?
前台<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm8.aspx.cs" Inherits="WebApplication1.WebForm8" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ListBox ID="lstTest" Rows="16" runat="server" />
</div>
</form>
</body>
</html>页面后台代码protected void Page_Load(object sender, EventArgs e)
{
User user = new User();
user.Username = "James";
user.PassWord = "123";
DataTable dt1 = new DataTable();
dt1.Columns.Add("ColumnID", typeof(string)); DataRow dr1 = dt1.NewRow();
dr1["ColumnID"] = "NIKE"; DataRow dr2 = dt1.NewRow();
dr2["ColumnID"] = "LiNing"; DataRow dr3 = dt1.NewRow();
dr3["ColumnID"] = "Jordan"; DataRow dr4 = dt1.NewRow();
dr4["ColumnID"] = "Kappa"; DataRow dr5 = dt1.NewRow();
dr5["ColumnID"] = "Anta"; dt1.Rows.Add(dr1);
dt1.Rows.Add(dr2);
dt1.Rows.Add(dr3);
dt1.Rows.Add(dr4);
dt1.Rows.Add(dr5);
lstTest.DataSource = dt1.DefaultView;
lstTest.DataValueField = "ColumnID";
lstTest.SelectedIndex = 4;
lstTest.DataBind();
lstTest.Enabled = false;
}能够禁用啊
我的页面源代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
无标题页
</title></head>
<body>
<form name="form1" method="post" action="WebForm8.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTc4ODEwNzcyOQ9kFgICAw9kFgICAQ8QDxYGHg5EYXRhVmFsdWVGaWVsZAUIQ29sdW1uSUQeC18hRGF0YUJvdW5kZx4HRW5hYmxlZGhkEBUFBE5JS0UGTGlOaW5nBkpvcmRhbgVLYXBwYQRBbnRhFQUETklLRQZMaU5pbmcGSm9yZGFuBUthcHBhBEFudGEUKwMFZ2dnZ2cWAQIEZGSSmDjOqHuTRyQ0aXYlq3pubiSHyQ==" />
</div><div> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBgLj5/SACgLwxduiBALp8/MxAp6qrsYNAqPeqtoHAtCDgdsOg6lPIygyST8TsdjXD8jluXehhIU=" />
</div>
<div>
<select size="16" name="lstTest" id="lstTest" disabled="disabled">
<option value="NIKE">NIKE</option>
<option value="LiNing">LiNing</option>
<option value="Jordan">Jordan</option>
<option value="Kappa">Kappa</option>
<option selected="selected" value="Anta">Anta</option></select>
</div>
</form>
</body>
</html>
没看到你引用任何CSS。
lstTest.Enabled = false; 的作用也是在select 上加 disabled="disabled"真没看出你的代码哪出问题了!
重新编译项目试试。
ASP.NET C# ListBox server control will not disable
请参阅 10 楼的 Stackoverflow 网站的帖子,老外也有同样的问题。
不用控件生成。多选菜单用<asp:Literal 自己拼装 HTML按老外说的用3.5
那你设置一下看看没有4.0的环境帮你测不了。。这个控件基本没有用过这种样子都是用ul li加上CSS、js来完成
<asp:Button ID="btnSubmit" Enabled="false" Text="提交" runat="server" />
生成的 HTML 代码如下所示:
<input type="submit" name="btnSubmit" value="提交" id="btnSubmit" disabled="disabled" class="aspNetDisabled" />就是说,<asp:Button> 同时设置了 disabled 和 class 属性。
不知道为什么 <asp:ListBox> 只设置 class 属性。
{
color: Red;
background-color: Aqua;
}然后在 TestForm.aspx 文件的 <head> 节中引用该 CSS 文件:<head runat="server">
<title>测试页</title>
<link href="Main.css" rel="stylesheet" type="text/css" />
</head>这个 lstTest.Enabled = false 的确按照 CSS 文件中指示的改变了前景景色和背景颜色。
但是如何使用 CSS 文件禁止用户进行选择呢?
将 ListBox 的 Enabled 属性设置为 false,从语义上说就是不让用户进行选择,microsoft 既然在 ASP.NET 4 中改用 class 来实现这个功能,总有他的道理吧。难道非要在 <system.web> 中使用 <pages controlRenderingCompatibilityVersion="3.5" /> 退回到 ASP.NET 3.5 模式?