我正在使用Rails 3.2.0.rc2.我有一个Model
,我有一个静态Array
,我通过一个表格提供,用户可以选择一个子集Array
并将他们的选择保存到数据库,存储在一个列中Model
.我在数据库列上使用了serialize,它存储了Array
Rails并正确地将用户的选择转换为Yaml(并在读取该列时返回到数组).我正在使用多选表单输入来进行选择.
我的问题是,我现在拥有它的方式,一切都按照我的预期工作,除了用户的子集数组在发送到服务器时总是有一个空白的第一个元素.
这不是什么大不了的事,我可以编写代码来解决这个事实,但我觉得我只是在做一些语法错误,因为在我看来默认的Rails行为不是故意的添加此空白元素没有任何理由.我一定错过了什么或忘了禁用某种设置.请帮助我理解我所缺少的东西(或者指出一些描述这个的好文档,比我在intertubes上找到的更深入).
subset_array
TEXT"字段的列serialize :subset_array
ALL_POSSIBLE_VALUES = [value1, value2, value3, ...]
f.select :subset_array, Model::ALL_POSSIBLE_VALUES, {}, :multiple => true, :selected => @model.subset_array
"model" => { "subset_array" => ["", value1, value3] }
UPDATE 'models' SET 'subset_array' = '--- \n- \"\"\n- value1\n- value3\n'
正如您所看到的,数组中的这个额外的空白元素是在数据库中发送和设置的.我怎么摆脱它?我的f.select
通话中是否缺少参数?
非常感谢赞赏:)
编辑:这是f.select
语句生成的HTML代码.看起来好像有一个隐藏的输入被生成,这可能是我的问题的原因?那为什么?
<input name="model[subset_array][]" type="hidden" value>
<select id="model_subset_array" multiple="multiple" name="model[subset_array][]" selected="selected">
<option …
Run Code Online (Sandbox Code Playgroud) 有没有办法在VS中选择多个非相邻(完全独立)的文本?我可以通过按住Ctrl键单独选择文本,在MS Word中执行此操作,如下所示:
我的版本是11.
编辑:我不是在谈论Alt+Select
块选择.另外我想看看Notepad ++中是否存在一种技术.
text-editor selection multi-select visual-studio visual-studio-2012
ListView有一个多选模式,我应该用什么来实现使用RecyclerView?如何处理onItemCheckedStateChanged?我查了一下,但是我无法理解这一点.任何代码片段或实现它的示例项目都会很棒.提前致谢.
我有一个简单的html多选下拉列表:
<select id="transactionType" multiple="multiple" size="10">
<option value="ALLOC">ALLOC</option>
<option value="LOAD1">LOAD1</option>
<option value="LOAD2">LOAD2</option>
<!-- etcetera... -->
</select>
Run Code Online (Sandbox Code Playgroud)
我希望在javascript被禁用的情况下继续使用此列表但是使用javaScript我想将列表呈现为多选下拉列表.也就是说它只显示列表中的一个项目,直到被点击,然后将展开以显示x项目并提供滚动,我可以在按住shift或ctrl的同时选择多个元素.
jQuery的新手正在搜索http://jquery.com/但还没有找到我需要的东西.
编辑 Struts2用户,所选答案将url编码为[]这会导致struts2中的问题,但修复非常容易.只需打开jquery.multiSelect.js并搜索"[]"并删除在字符串连接中使用的一个实例.我也使用jQuery 1.4.4而不是与它捆绑在一起的1.3.2,一切正常.
内置的WPF TreeView控件不允许多选,就像ListBox一样.如何自定义TreeView以允许多重选择而无需重写.
在像这样的DataGrid中:
<DataGrid AutoGenerateColumns="False" Height="200" Name="dataGrid"
IsReadOnly="True" ItemsSource="{Binding CollectionView}" >
...
</Datagrid>
Run Code Online (Sandbox Code Playgroud)
如何禁用多选功能?
(我确信这很简单,但我找不到.)
我是否必须遍历所有并设置删除'selected'属性还是有更好的方法?
(对不起,这里有几个项目,但似乎没有一个允许我让这个工作.)
我想创建一个允许多选的DropDownList.我能够填充列表,但我无法获得当前选定的值似乎工作.
我的控制器中有以下内容:
ViewBag.PropertyGroups = from g in db.eFinGroups
where g.GroupType.Contents == "P"
select new
{
Key = g.Key,
Value = g.Description,
Selected = true
};
ViewBag.SelectedPropertyGroups = from g in company.Entities
.First().Properties.First().PropertyGroups
select new {
g.eFinGroup.Key,
Value = g.eFinGroup.Description };
在视图中我有:
@Html.DropDownListFor(model => model.PropertyGroupsX,
new MultiSelectList(ViewBag.PropertyGroups
, "Key", "Value"
, ViewBag.SelectedPropertyGroups),
new { @class = "chzn-select", data_placeholder = "Choose a Property Group", multiple = "multiple", style = "width:350px;" })
PropertyGroupX是模型中的字符串[].
我已尝试使用所选属性的所有类型的迭代...只传递值,只传递键,两者等.
另外,PropertyGroupX应该是什么类型的?字符串数组是否正确?或者它应该是包含当前属性组的字典?我真的很难找到这方面的文档.
有人建议我应该使用ListBoxFor.我已经改变了,仍然有同样的问题.呈现选项标记时,所选值未设置为选中状态.这是我尝试过的:
@ Html.ListBoxFor(model => model.PropertyGroups,new MultiSelectList(ViewBag.PropertyGroups,"Key","Value"))
我已经尝试将model.PropertyGroups作为匹配值的字符串集合,作为Guid的集合匹配此ID,并作为匿名类型同时具有Key和Value以匹配ViewBag中的项目.似乎没什么用.
selectlist multi-select asp.net-mvc-3 drop-down-menu html.listboxfor
如何重新启用onChange我的多选下拉列表中的所有选定值.这里使用插件.试着使用以下但我认为我走错了路
$('#multiselect1').multiselect({
selectAllValue: 'multiselect-all',
enableCaseInsensitiveFiltering: true,
enableFiltering: true,
maxHeight: '300',
buttonWidth: '235',
onChange: function(element, checked) {
var brands = $('#multiselect1 option:selected');
var selection = [];
$(brands).each(function(index, brand){
selection.push(brand);
});
console.log(selection);
}
});
Run Code Online (Sandbox Code Playgroud)
找到了
$('#multiselect1').multiselect({
selectAllValue: 'multiselect-all',
enableCaseInsensitiveFiltering: true,
enableFiltering: true,
maxHeight: '300',
buttonWidth: '235',
onChange: function(element, checked) {
var brands = $('#multiselect1 option:selected');
var selected = [];
$(brands).each(function(index, brand){
selected.push([$(this).val()]);
});
console.log(selected);
}
});
Run Code Online (Sandbox Code Playgroud) multi-select ×10
jquery ×4
wpf ×2
android ×1
datagrid ×1
forms ×1
html ×1
jquery-ui ×1
selection ×1
selectlist ×1
text-editor ×1
treeview ×1
xaml ×1