如何禁用ASP.NET中的下拉列表?

Yve*_*ves 13 c# asp.net webforms

如何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>
Run Code Online (Sandbox Code Playgroud)

这不适合我.我究竟做错了什么?

Nik*_*696 27

asp.net webforms的真正下拉列表没有readonly属性.

        <asp:DropDownList ID="DropDownList1" runat="server" Enabled="False">
    </asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)

如果那不是你正在做的事情,你将需要更加具体.你没有问一个问题,你没有解释什么不起作用,或者说你是在使用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>
Run Code Online (Sandbox Code Playgroud)


Anj*_*san 14

您可以禁用下拉列表,但您需要从后面的代码中执行此操作.

在你的.cs中尝试这个(假设你的asp:DropDownList作为ddlCategory的id),

ddlCategory.Attributes.Add("disabled", "disabled");
Run Code Online (Sandbox Code Playgroud)


drs*_*222 6

假设禁用你的意思是"让它使用户无法从列表中选择一个项目",那么以下示例都会产生相同的html(这对我有用):

方法1:

<asp:DropDownList ID="dd" Enabled="false" runat="server">...
Run Code Online (Sandbox Code Playgroud)

方法2:

<asp:DropDownList ID="dd" disabled="disabled" runat="server">...
Run Code Online (Sandbox Code Playgroud)

方法3(aspx):

<asp:DropDownList ID="dd" runat="server">...
Run Code Online (Sandbox Code Playgroud)

方法3(aspx.cs):

dd.Enabled = false;
Run Code Online (Sandbox Code Playgroud)

方法4(aspx):

<asp:DropDownList ID="dd" runat="server">...
Run Code Online (Sandbox Code Playgroud)

方法4(aspx.cs):

dd.Attributes.Add("disabled", "disabled")
Run Code Online (Sandbox Code Playgroud)

产生的HTML:

<select name="dd" id="dd" disabled="disabled">...
Run Code Online (Sandbox Code Playgroud)