C# 如何在asp.net的dropdownlist中获取选定值
关闭下拉列表后,我无法在下拉列表中获取所选值。 设计文件:C# 如何在asp.net的dropdownlist中获取选定值,c#,asp.net,wpf,C#,Asp.net,Wpf,关闭下拉列表后,我无法在下拉列表中获取所选值。 设计文件: <StackPanel Orientation="Horizontal" Margin="2"> <TextBlock Width="60" VerticalAlignment="Center" Text="state"></TextBlock> <ComboBox Name="cmbState" Margin
<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);
}
我已经复制粘贴了我的全部代码,有人能告诉我如何获得所选下拉列表值吗?我在第二次下拉列表中获得所选值,我希望在关闭下拉列表时获得相同的值。需要帮忙吗
谢谢对不起,我自己修好了。问题是我更改了事件名称。我错误地在“打开”中写入了“关闭”事件代码,在“关闭”中写入了“打开”事件代码:- 答案就在这里
@Html.DropDownList("Gender",
new SelectList(
Enum.GetValues(
typeof(MvcLahore1.Models.Gender)
),
selectedValue:Model.Gender),
new { @class = "form-control"}
)
对不起,我自己修好了。问题是我更改了事件名称。我错误地在“打开”中写入了“关闭”事件代码,在“关闭”中写入了“打开”事件代码:-