web-dev-qa-db-ja.com

ASP.NETでドロップダウンリストを無効にするにはどうすればよいですか?

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>

これではうまくいきません。何が悪いのですか?

13
Yves

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>
27
Nikki9696

ドロップダウンリストを無効にすることができますが、背後のコードから行う必要があります。

これを.csで試してください(asp:DropDownListをddlCategoryのIDとして想定)、

ddlCategory.Attributes.Add("disabled", "disabled");
14
Anjisan

無効とは、「ユーザーがリストからアイテムを選択できないようにする」という意味であるとすると、次の例はすべて同じ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">...
6
drs9222
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;
}
0
Yves

これが私がすることです:

ddlEditTotalHoursEffect.Enabled = false;

私はあなたのコードビハインドから行うことができます。

ああ、待って、あなたはfalseに等しいを有効にしました。それで、あなたが何をしようとしているのですか?データ入力ボックスを有効にしますが、プルダウンは無効にしますか?

0