繁体   English   中英

如何在asp.net的下拉列表中获取选定的值

[英]How to get selected values in dropdownlist in asp.net

关闭它后,在下拉列表中获取所选值时遇到问题。 设计文件:

  <StackPanel Orientation="Horizontal" Margin="2">
                    <TextBlock Width="60" VerticalAlignment="Center" Text="state"></TextBlock>
                    <ComboBox  Name="cmbState" Margin="{StaticResource DefaultMargin}" Height="20" Width="220" ItemsSource="{Binding state}" DropDownOpened="cmbState_OnDropDownOpened" DropDownClosed="cmbState_OnDropDownClosed">
                        <ComboBox.ItemTemplate>
                            <DataTemplate>
                                <CheckBox Content="{Binding name}" IsChecked="{Binding selected, Mode=TwoWay}"/>
                            </DataTemplate>
                        </ComboBox.ItemTemplate>
                    </ComboBox>
                </StackPanel>


 public class State : ViewModelBase, ICloneable<State>
    {
        public State()
        {
            Selected = false;
        }

        public string name { get; set; }

        private bool Selected;
        public bool selected
        {
            get { return Selected; }
            set
            {
                if (value == Selected) return;
                Selected = value;
                NotifyPropertyChanged("selected");
            }
        }

        public State clone()
        {
            return MemberwiseClone() as State;
        }
    }
List<string> allState = new List<string> { "Proposed", "Active", "Resolved", "Closed" };
var states = allState.Select(state => new State { name = state }).ToList();
cmbState.ItemsSource = states;

private void cmbState_OnDropDownOpened(object sender, EventArgs e)
        {
            var selectedState = new List<string>();
            cmbState.Items.ToList().ForEach(item =>
            {
                var version = item as State;
                if (version == null) return;
                if (version.selected)
                {
                    if (!selectedState.Contains(version.name))
                        selectedState.Add(version.name);
                }
            });
            if (selectedState.Any())
            {

                var states = cmbState.ItemsSource as List<State>;
                if (states == null) return;
                var release = new State { name = string.Join(";", selectedState), selected = true };
                states.Insert(0, release);
                cmbState.SelectedIndex = 0;
            }
        }
        private void cmbState_OnDropDownClosed(object sender, EventArgs e)
        {
            var selectedState = cmbIssueType.Items[0] as State;

            if (selectedState == null) return;

            var states = cmbIssueType.ItemsSource as List<State>;

            if (states == null) return;

            foreach (var item in selectedState.name.Split(';').Select(version => states.FirstOrDefault(v => v.name == version)).Where(item => item != null))
          {
                item.selected = true;
            }
            states.Remove(selectedState);
        }

我已经复制粘贴了我的整个代码,谁能告诉我如何获取所选的下拉列表值,我第二次在dropdown期间获取所选的值,我希望在dropping结束时也是如此。 有什么帮助吗?

谢谢

对不起,我已经自己动手了。 问题是我更改了事件名称。 我错误地用open编写了close事件代码,并用close编写了open事件代码。 :-)

这是答案

@Html.DropDownList("Gender", 
  new SelectList(
    Enum.GetValues(
      typeof(MvcLahore1.Models.Gender)
    ),
    selectedValue:Model.Gender), 
    new { @class = "form-control"}
  )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM