所以,我有几乎同样的问题,但我想我可以在我的要求更加明确。
我有一个dxList使用SQLite表作为数据源。它设置为允许用户从模板列表中进行选择以应用于其他对象。这个新的模板列表和关联的对象ID将被保存在与原始数据不同的表格中,因此,我需要能够识别列表中已检查过的项目。
<div data-bind="dxList: { dataSource: templateList }">
<div data-bind="dxAction: ''" data-options="dxTemplate : { name: 'item' } ">
<table>
<tr>
<td>
<div data-bind="dxCheckBox: { }"></div>
</td>
<td>
<div style="font-weight: bold; padding-left: 10px;" data-bind="text: TemplateName"></div>
</td>
</tr>
</table>
</div>
</div>
我在初次搜索时发现了这篇文章。我无法使用每个复选框的data-bind:{checked:?}值,就像发现原始海报那样,设置全部或不设置。我想过一个数组。我将尝试使用dxAction从数组中添加/删除已检查的列表项ID,但我不确定这样做会有多好。然后有最后的解析来获取所有检查的项目。一旦我开始工作,我会更新这篇文章。
分辨率:
视图模型对象:
selectedTemplates: ko.observableArray(),
selectTemplate: function (args) {
//If it's there. Remove it.
if (args.model.selectedTemplates.indexOf(args.itemData.TemplateID) > -1) {
args.model.selectedTemplates.pop(args.itemData.TemplateID);
args.itemElement[0].style.backgroundColor = '';
args.itemElement[0].style.color = 'Black';
}
//else Add
else {
args.model.selectedTemplates.push(args.itemData.TemplateID);
args.itemElement[0].style.backgroundColor = '#017AFF';
args.itemElement[0].style.color = 'White';
}
},
和视图:
<div data-options="dxView : { name: 'SelectSurveys', title: 'SelectSurveys' } ">
<div data-bind="dxCommand: { title: 'Save', id: 'create', action: saveSelections, icon: 'save' }"></div>
<div data-options="dxContent : { targetPlaceholder: 'content' } ">
<div data-bind="dxList: { dataSource: templateList, itemClickAction: selectTemplate }">
<div data-options="dxTemplate : { name: 'item' } ">
<div style="font-weight: bold; padding-left: 10px;" data-bind="text: SurveyName"></div>
</div>
</div>
</div>
</div>
和循环选定的值保存到本地数据库:
$.each(args.model.selectedTemplates(), function (index, value) {
db.transaction(function (tx) {
console.log("Inserting Data");
tx.executeSql(sql, [value],
function (t, result1) {
if (result1 != null) {
console.log("New Item added." + result1.insertId);
}
},
function (t, error) {
console.log(error);
});
});
在物体s,我已经添加了一些着色,因此您可以知道选择了哪些着色,它不使用dxSwitch或复选框,但它的工作原理也一样,我认为它更具视觉吸引力,并且对用户有帮助。
你是如何测试的?最坏的情况下,我会尝试使用像萤火虫或开发工具的东西右键单击并检查复选框,看看是什么属性告诉它看起来检查,然后做一个jquery调用,说找到'checked'元素,并与他们做一些事情。 – segFault
@segFault如果我需要,我会这样做,但是如果可以的话,我希望有一个来自PhoneJS的内置解决方案 – Caleb