Оттенки серого цвета Некоторые предметы C # - PullRequest
0 голосов
/ 18 марта 2019

Я хотел бы отключить некоторых членов 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();

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Похоже, я был не прав.Существует опция отключения определенного элемента выбора в 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 должен был знать, как с самого начала генерировать свойство disabled.Я не знаю, почему это так, но, вероятно, есть веская причина для этого.Я определенно сделал бы это по-другому, либо играя с текстом, проверяя постбэк, либо просто пропуская отключенные опции.Видимо, это не должно было быть так.

0 голосов
/ 18 марта 2019

Выпадающие списки - это элементы управления "select" с элементами "option". В большинстве браузеров вы можете только отключить (или раскрасить) сам элемент управления, а не конкретные «параметры». В прошлом это было немного по-другому. Если вы действительно хотите это сделать, есть много готовых элементов управления JS Dropdown или даже начальной загрузки, которые могут сделать это очень хорошим способом.

...