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>
これではうまくいきません。何が悪いのですか?
Asp.net Webフォームの真のドロップダウンリストには、読み取り専用プロパティはありません。
<asp:DropDownList ID="DropDownList1" runat="server" Enabled="False">
</asp:DropDownList>
それがあなたのやっていることではない場合は、もっと具体的にする必要があります。質問したり、何が機能していないかを説明したり、webformsやwinformsを使用しているのか、コードビハインドやaspxページにあるのかを説明していません。
ETA:読み取り専用プロパティをドロップダウンリストから削除します。無効です。その部分をテストし、それが修正されたかどうかを確認した後、それでもまだ期待どおりに機能していない場合は、機能していないことをお知らせください。無効にしていませんか?データバインドではありませんか?何が起こっているのですか?
値がクエリの更新などに返される場合は、編集テンプレートにEvalではなくBindを使用してください。プラットフォームがバックグラウンドで実行している場合があるので、一般的に言えば、Bindを使用するだけです。
もう1つ編集:これは、バインドされ、ドロップダウンが選択できないという点で、最も基本的な意味で私にとっては機能します。
<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>
ドロップダウンリストを無効にすることができますが、背後のコードから行う必要があります。
これを.csで試してください(asp:DropDownListをddlCategoryのIDとして想定)、
ddlCategory.Attributes.Add("disabled", "disabled");
無効とは、「ユーザーがリストからアイテムを選択できないようにする」という意味であるとすると、次の例はすべて同じ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">...
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;
}
これが私がすることです:
ddlEditTotalHoursEffect.Enabled = false;
私はあなたのコードビハインドから行うことができます。
ああ、待って、あなたはfalseに等しいを有効にしました。それで、あなたが何をしようとしているのですか?データ入力ボックスを有効にしますが、プルダウンは無効にしますか?