0
我一直在使用这种tutorial创建一个屏幕,用户可以在给定屏幕上添加额外的输入字段MVC UIHint/Parital观点与jQuery多选,动态创建问题
而不是使用文本框所有的Iv'e创建将呈现多选JQuery的小部件UIHint /局部视图(我使用this component)
视图模型的每一行项目
public class Micros
{
[UIHint("JsonComboBox")]
[AdditionalMetadata("id", "Lab_T_ID")]
[AdditionalMetadata("description", "Description")]
[AdditionalMetadata("action", "LabTestOptions")]
[AdditionalMetadata("controller", "Micro")]
[AdditionalMetadata("noneSelectedText", "Test")]
[AdditionalMetadata("comboboxWidth", "200")]
[DisplayName("Test")]
public Nullable<int> Lab_T_ID { get; set; }
[UIHint("JsonComboBox")]
[AdditionalMetadata("id", "Lab_SD_ID")]
[AdditionalMetadata("description", "Description")]
[AdditionalMetadata("action", "LabSampleDetailOptions")]
[AdditionalMetadata("controller", "Micro")]
[AdditionalMetadata("noneSelectedText", "Sample Details")]
[AdditionalMetadata("comboboxWidth", "300")]
[DisplayName("Sample Details")]
public Nullable<int> Lab_SD_ID { get; set; }
[DisplayName("Result")]
public string Result { get; set; }
}
局部视图/ UIHint
@model int?
@{
var values = ViewData.ModelMetadata.AdditionalValues;
}
<select id="@values["id"]" multiple="multiple" style="width:@values["comboboxWidth"]px" > </select>
<script type="text/javascript">
$.getJSON('@Url.Action((string)values["action"], (string)values["controller"])',
null,
function (j) {
var options = '';
for (var i = 0; i < j.length; i++) {
options += '<option value="' + j[i][email protected]["id"] + '">' + j[i][email protected]["description"] + '</option>';
}
$('#@values["id"]').html(options);
$('#@values["id"] option:first').attr('selected', 'selected');
});
setTimeout(function() {
$("#@values["id"]").multiselect({
multiple: false,
header: "Select an option",
noneSelectedText: '@values["noneSelectedText"]',
selectedList: 1
});
}, 300);
</script>
组件渲染初始页面加载罚款,但是当加入的项目,他们会添加...但它似乎JavaScript不执行/获取添加..
任何想法?还在调试这个问题,会尽快,我觉得它发布的修补程序,但我希望有人能指出我在正确的方向
更新
到目前为止,我发现(我们”它看起来像),当用户点击添加另一个项目时,UIHint/Partial不会被渲染。 (否则,选择将物品填充,并JQuery的部件将被应用)
再次感谢你嘘,感觉就像我在学习跨越式发展。 我甚至不知道你可以做到这一点“select.data('value')” – 2012-03-14 08:42:14
我将如何能够指定哪些选择我提取/从收到的HTML看 var select = $( 'select',html); 目前它创建两个相同的选择项目,并删除文本框。 我试着添加一个id并选择它,但它似乎没有正常工作? – 2012-03-14 10:03:59
@Yenros,在这种情况下''('select',html)'选择器将返回一个数组。然后你可以使用'$ .each'循环这个数组的结果:'$('select',html).each(function(index,select){...});' – 2012-03-14 10:05:51