Как отключить выпадающий список в ASP.NET?
Как отключить DropDownList
в ASP.NET?
Код:
<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>
Это не работает для меня. Что я делаю неправильно?
Ответы
Ответ 1
Не существует свойства readonly для верного dropdownlist для веб-форм asp.net.
<asp:DropDownList ID="DropDownList1" runat="server" Enabled="False">
</asp:DropDownList>
Если это не то, что вы делаете, вам нужно быть более конкретным. Вы не задавали вопрос, вы не объяснили, ЧТО не работает, или говорите, если вы используете веб-формы или 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>
Ответ 2
Вы можете отключить раскрывающийся список, но вам нужно будет сделать это из кода.
Попробуйте это в своем .cs(предположим, что ваш asp: DropDownList как id ddlCategory),
ddlCategory.Attributes.Add("disabled", "disabled");
Ответ 3
Предполагая, что отключив, вы имеете в виду "сделать так, чтобы пользователь не мог выбрать элемент из списка", тогда следующие примеры приводят к тому же 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">...
Ответ 4
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;
}
Ответ 5
Это то, что я делаю:
ddlEditTotalHoursEffect.Enabled = ложь;
Я могу сделать из вашего кода.
Ой, подождите, вы включили равным false. Что ты собираешься делать, тогда? Вы хотите включить окно ввода данных, но не выпадающее меню?