如何在ASP.NET中禁用DropDownList
?
<asp:TemplateField HeaderText="Effective Total Hours">
<ItemTemplate>
<%# Eval("TotalHoursEffect")%>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlEditTotalHoursEffect" AppendDataBoundItems="true"
DataSourceID="dsTHMsql" DataValueField="Minutes" Enabled="false"
ReadOnly="true" DataTextField="Display"
SelectedValue='<%# Eval("TotalHoursEffect") %>' runat="server">
<asp:ListItem Selected="True" Value="">(Choose Minutes)</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
这对我不起作用。我做错了什么?
答案 0 :(得分:26)
asp.net webforms的真正下拉列表没有readonly属性。
<asp:DropDownList ID="DropDownList1" runat="server" Enabled="False">
</asp:DropDownList>
如果这不是你正在做的事情,你需要更加具体。你没有问一个问题,你没有解释什么不起作用,或者说你是在使用webforms还是winforms,或者它是在后面的代码中还是在aspx页面中。
ETA:从下拉列表中删除readonly属性,它无效。在您测试该部件并确定它是否已修复之后,如果它仍然没有按照您的要求进行操作,请告诉我们它没有做什么。它不是禁用吗?它不是数据绑定吗?发生了什么事?
哦,如果以任何方式(例如查询更新)传回值,请确保使用Bind而不是Eval作为编辑模板。有时平台是在幕后进行的,所以一般来说,只需使用Bind。
还有一个编辑:这在最基本的意义上适用于我,因为它绑定并且下拉列表不可选。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ProductID"
DataSourceID="sqldsProducts" AutoGenerateEditButton="True">
<Columns>
<asp:BoundField DataField="ProductID" HeaderText="ProductID" SortExpression="ProductID" />
<asp:TemplateField HeaderText="CategoryID" InsertVisible="False" SortExpression="CategoryID">
<EditItemTemplate>
<asp:DropDownList Enabled="false" ID="ddlCategory" runat="server" DataSourceID="sqldsCategories"
DataTextField="CategoryName" DataValueField="CategoryID" SelectedValue='<%# Bind("CategoryID") %>' AppendDataBoundItems="True">
<asp:ListItem Selected="True" Value="" Text="-- choose one --" />
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblCategory" runat="server" Text='<%# Bind("ProductID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" />
</Columns>
</asp:GridView>
答案 1 :(得分:14)
您可以停用下拉列表,但您需要从后面的代码中执行此操作。
在你的.cs中尝试这个(假设你的asp:DropDownList作为ddlCategory的id),
ddlCategory.Attributes.Add("disabled", "disabled");
答案 2 :(得分:6)
假设禁用你的意思是“让它让用户无法从列表中选择一个项目”,那么以下示例都会产生相同的html(这对我有用):
方法1:
<asp:DropDownList ID="dd" Enabled="false" runat="server">...
方法2:
<asp:DropDownList ID="dd" disabled="disabled" runat="server">...
方法3(aspx):
<asp:DropDownList ID="dd" runat="server">...
方法3(aspx.cs):
dd.Enabled = false;
方法4(aspx):
<asp:DropDownList ID="dd" runat="server">...
方法4(aspx.cs):
dd.Attributes.Add("disabled", "disabled")
结果HTML:
<select name="dd" id="dd" disabled="disabled">...
答案 3 :(得分:0)
var rmu_minutes = 0;
var initRmuChangeHandlers = function() {
$(".container select").change(function(e) {
var x = 0;
var dropDowns = $(".container select");
dropDowns.each(function() {
var ddl = this;
x += parseInt(ddl.value);
if (!dayOffRmuValidator(x)) {
alert("4 Hours MAX");
ddl.selectedIndex = 0;
}
});
rmu_minutes = x;
updateTotalRmu();
});
}
var initClearRmuDropDowns = function() {
var dropDowns = $(".container select");
dropDowns.each(function() {
var ddl = this;
ddl.selectedIndex = 0;
});
}
var dayOffRmuValidator = function(rmu_minutes) {
var _MAXMINUTES = 240;
var ddl = $get('ctl00_ContentPlaceHolder1_DetailsView1_ddlEditType');
var ddlVal = parseInt(ddl.options[ddl.selectedIndex].value);
if (ddlVal == RequestTypes["Day Off"])
return rmu_minutes <= _MAXMINUTES;
return true;
}
var badRmuHours = function() {
alert("You are only allowed to make up 4 hours total for a day off");
var ddlTotal = $("#ctl00_ContentPlaceHolder1_DetailsView1_ddlEditTotalHoursEffect")[0];
ddlTotal.selectedIndex = 0;
}
答案 4 :(得分:0)
这就是我的所作所为:
ddlEditTotalHoursEffect.Enabled = FALSE;
我可以通过代码隐藏完成。
哦,等等,你已经启用等于假。那你在做什么呢?是否要启用数据输入框而不是下拉?