我有一个ComboBox提供下拉列表的表单.在comboBox上SelectedIndexChanged event,运行一些代码,但我不希望代码在表单加载时运行.不幸的是,当我加载表格时(在我在组合框中进行选择之前),SelectedIndexChanged组合框发射(我认为当组合框时databinding).有没有办法避免这种行为?
我需要能够动态创建<select>元素并将其转换为jQuery .combobox().这应该是元素创建事件,而不是某些"click"事件,在这种情况下我可以使用jQuery .on().
这样的事情存在吗?
$(document).on("create", "select", function() {
$(this).combobox();
}
Run Code Online (Sandbox Code Playgroud)
我不愿意使用livequery,因为它已经过时了.
更新提到的select/combobox通过ajax加载到jQuery颜色框(模态窗口),因此问题 - 我只能使用colorbox启动组合框onComplete,但是在更改一个组合框时,必须动态创建另一个select/combobox,因此我需要一个检测元素创建的更通用方法(select在本例中).
UPDATE2为了尝试进一步解释问题 - 我有select/combobox递归创建的元素,里面还有很多启动代码.combobox(),因此如果我使用经典的方法,比如在@ bipen的答案中,我的代码会膨胀到疯狂的级别.希望这能更好地解释问题.
UPDATE3感谢大家,我现在明白,因为DOMNodeInserted在DOM变异中遗漏了一个空白,并且没有解决这个问题的方法.我只需要重新考虑我的申请.
我正在使用jQuery UI Autocomplete Combobox的修改版本,如下所示:http: //jqueryui.com/demos/autocomplete/#combobox
为了这个问题,让我说我有完全相同的代码^^^
打开组合框时,通过单击按钮或聚焦组合框文本输入,在显示项目列表之前会有很大的延迟.当选择列表有更多选项时,此延迟会明显变大.
这种延迟不仅仅发生在第一次,它每次都会发生.
由于此项目中的一些选择列表非常大(数百和数百项),延迟/浏览器冻结是不可接受的.
有人能指出我正确的方向来优化这个吗?或者甚至可能出现性能问题?
我认为问题可能与脚本显示完整项目列表的方式有关(自动完成搜索空字符串),是否有其他方式显示所有项目?也许我可以构建一个关闭显示所有项目的案例(因为在开始键入之前打开列表是很常见的),它不能完成所有的正则表达式匹配?
这是一个摆弄的小提琴:http: //jsfiddle.net/9TaMu/
我有一个WPF组合框,它充满了,例如,客户对象.我有一个DataTemplate:
<DataTemplate DataType="{x:Type MyAssembly:Customer}">
<StackPanel>
<TextBlock Text="{Binding Name}" />
<TextBlock Text="{Binding Address}" />
</StackPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
这样,当我打开我的ComboBox时,我可以看到不同的客户的姓名,以及下面的地址.
但是当我选择一个Customer时,我只想在ComboBox中显示Name.就像是:
<DataTemplate DataType="{x:Type MyAssembly:Customer}">
<StackPanel>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
我可以为ComboBox中的所选项目选择另一个模板吗?
解
在答案的帮助下,我解决了这个问题:
<UserControl.Resources>
<ControlTemplate x:Key="SimpleTemplate">
<StackPanel>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</ControlTemplate>
<ControlTemplate x:Key="ExtendedTemplate">
<StackPanel>
<TextBlock Text="{Binding Name}" />
<TextBlock Text="{Binding Address}" />
</StackPanel>
</ControlTemplate>
<DataTemplate x:Key="CustomerTemplate">
<Control x:Name="theControl" Focusable="False" Template="{StaticResource ExtendedTemplate}" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ComboBoxItem}}, Path=IsSelected}" Value="{x:Null}">
<Setter TargetName="theControl" Property="Template" Value="{StaticResource SimpleTemplate}" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</UserControl.Resources> …Run Code Online (Sandbox Code Playgroud) 我刚开始使用WPF表单而不是Windows Forms表单.在Windows窗体表单中,我可以这样做:
ComboBox.SelectedValue.toString();
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作.
我如何在WPF中执行此操作?它似乎没有选择权.
我正在使用.NET 2.0,我正在尝试将组合框的数据源绑定到排序字典.
所以我得到的错误是"DataMember属性'Key'无法在数据源上找到".
SortedDictionary<string, int> userCache = UserCache.getSortedUserValueCache();
userListComboBox.DataSource = new BindingSource(userCache, "Key"); //This line is causing the error
userListComboBox.DisplayMember = "Key";
userListComboBox.ValueMember = "Value";
Run Code Online (Sandbox Code Playgroud) 好的,我查看了其他问题,似乎没有得到我的答案,所以希望有人在这里.
非常简单的问题为什么DisplayMemberPath属性不绑定到项目?
<ComboBox Grid.Row="1" Grid.Column="2" ItemsSource="{Binding PromptList}" DisplayMemberPath="{Binding Name}" SelectedItem="{Binding Prompt}"/>
Run Code Online (Sandbox Code Playgroud)
跟踪输出显示它正在尝试绑定到持有IEnumerable的类而不是IEnumerable中的实际项.我很困惑一个简单的方法来填充一个组合框而不在xaml中添加一串线.
它只是在itemssource中为对象调用ToString().我有一个解决方法是:
<ComboBox Grid.Row="1" Grid.Column="2" ItemsSource="{Binding PromptList}" SelectedItem="{Binding Prompt}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)
但在我看来,对于这么简单的任务来说太过分了.我可以使用relativesource绑定吗?
我有一个组合框,我想阻止用户使用鼠标滚轮滚动项目.
有一个简单的方法吗?
(C#,VS2008)
如何阻止用户在ComboBox中输入,以便用户只能选择定义列表中的一个项目?
我正在构建一个String,代码看起来像
String status = "The status of my combobox is " + comboBoxTest.SelectedText
Run Code Online (Sandbox Code Playgroud)
我在VS2010中使用WinForm
结果看起来像
"我的组合框的状态是"
combobox ×10
c# ×4
winforms ×3
wpf ×3
.net ×2
jquery ×2
autocomplete ×1
data-binding ×1
datasource ×1
javascript ×1
jquery-ui ×1
mousewheel ×1
performance ×1
string ×1
templates ×1
vb.net ×1