灰色某些项目C#

问题描述 投票:0回答:2

我想禁用ItemList的某些成员。我尝试过以下代码的变体,但似乎没有任何效果。我希望残疾的Items留在list,但灰色。我在这个问题上似乎有类似的帖子,但似乎没有任何效果。

List<SelectListItem> selectitem = new List<SelectListItem>();

selectitem.Add(new SelectListItem { Text = "Select", Value = "-1", Disabled = false });

while (reader.Read())
{
string displayText = "TextTest";
string displayValue = "ValueTest";

selectitem.Add(new SelectListItem { Text = displayText, Value = displayValue, Disabled = true });
}

EstimateDropDownList.DataSource = selectitem;
EstimateDropDownList.DataTextField = "Text";
EstimateDropDownList.DataValueField = "Value";
EstimateDropDownList.DataBind();

...

  internal class SelectListItem
    {
        public string Text { get; set; }
        public string Value { get; set; }
        public bool Disabled { get; set; }
    }

...

<asp:DropDownList ID="EstimateDropDownList" runat="server" Width="200px" Height="27px"
    AutoPostBack="true" OnSelectedIndexChanged="EstimateDropDownList_SelectedIndexChanged">
</asp:DropDownList>

我也试过这个,但这也没用。

EstimateDropDownList.DataSource = selectitem;

foreach (ListItem item in EstimateDropDownList.Items)
   {
     if (true)
      {
          item.Attributes.Add("disabled", "disabled");
      }
   }

EstimateDropDownList.DataTextField = "Text";
EstimateDropDownList.DataValueField = "Value";
EstimateDropDownList.DataBind();
c# asp.net dropdownlistfor disable
2个回答
0
投票

下拉列表是带有“选项”元素的“选择”控件。在大多数浏览器中,您只能禁用(或着色)控件本身而不是特定的“选项”。在过去,这有点不同。如果你想这样做,有许多现成的JS Dropdown控件甚至引导程序可以以非常好的方式执行此操作。


0
投票

看起来我错了。有一个选项可以禁用HTML中的特定选择项。见这里:https://www.w3schools.com/tags/tag_option.asp

请参阅此下拉列表,例如:

<select>
  <option value="volvo">Volvo</option>
  <option value="saab" disabled>Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>

要利用这个:

ListItemCollection lic = new ListItemCollection();
lic.Add(new ListItem("first", "1"));
lic.Add(new ListItem("second", "2", false));
lic.Add(new ListItem("third", "3"));

foreach(ListItem li in lic)
{
    //create a new list item, because otherwise it will skip disabled items.
    ddl.Items.Add(new ListItem(li.Text, li.Value));
    if(li.Enabled == false)
    {
        ddl.Items[ddl.Items.Count - 1].Attributes.Add("disabled", "");
    }
}

这是一个奇怪的解决方法,因为asp.net控件应该知道如何生成禁用的属性开始。我不知道为什么会这样,但可能是有正当理由的。我肯定会以不同的方式做到这一点,无论是通过播放文本,检查回发后,还是只是忽略禁用的选项。显然,它不应该是这样的。

© www.soinside.com 2019 - 2024. All rights reserved.