【发布时间】:2014-10-07 10:22:22
【问题描述】:
所以我正在 c# 中使用 Visual Studio 2013 开发 Microsoft Lightswitch 应用程序,我需要一个动态 UI。
基本上在数据库中我有一个 Person 表、一个 Skill 表和一个 PersonSkills 表,它们将两者联系在一起(一个人可以有多种技能,每个技能都有一个技能级别。暂时忽略 Person 字段 - 那将是取出并自动完成)。
现在在 AddSkill 页面上,我需要能够添加任意数量的技能,而不必一遍又一遍地打开相同的 AddSkill 弹出窗口。我目前的做法是(使用 google chrome)右键单击 + 按钮以搜索技能并选择 Inspect Element,以查看该按钮的 css 代码(因为它是 css/jquery 移动元素)。
这为我提供了该技能框和级别框的 css 代码,并使用 lightswitch 的 postRender 方法和 .change jquery 方法,每当更改技能时,我将另一个技能和级别框的代码添加到组件中。
myapp.AddEditPersonSkill.left_postRender = function (element, contentItem) {
// Write code here.
var context = $(element);
//Sorry that its all in one line and terrible...
context.change(function () {
context.append('<div class="msls-first-column msls-presenter msls-ctl-rows-layout msls-vauto msls-hstretch msls-presenter-content msls-font-style-normal msls-hscroll msls-label-host msls-rows-layout" style="min-width: 200px; max-width: 400px; width: 229px;"><div class="msls-clear msls-first-row msls-presenter msls-ctl-details-modal-picker msls-vauto msls-hstretch msls-leaf"><div class="msls-label msls-label-align-top msls-clear msls-vauto"><label>Skill</label></div><div class="msls-clear msls-presenter-content msls-font-style-normal msls-vauto msls-hscroll"><div class="id-container"><form class="ui-listview-filter ui-bar-a ui-listview-filter-inset" role="search"><div class="ui-input-search ui-shadow-inset ui-btn-corner-all ui-btn-shadow ui-icon-searchfield ui-body-a ui-mini"><input placeholder="Search" data-type="search" class="ui-input-text ui-body-a"><a href="#" class="ui-input-clear ui-btn ui-btn-up-a ui-shadow ui-btn-corner-all ui-fullsize ui-btn-icon-notext ui-input-clear-hidden" title="clear text" data-corners="true" data-shadow="true" data-iconshadow="true" data-wrapperels="span" data-icon="delete" data-iconpos="notext" data-theme="a" data-mini="false"><span class="ui-btn-inner"><span class="ui-btn-text">clear text</span><span class="ui-icon ui-icon-delete ui-icon-shadow"> </span></span></a></div></form><ul class="id-auto-complete-element ui-listview ui-listview-inset ui-corner-all ui-shadow" data-role="listview" data-inset="true" data-filter="true" data-filter-theme="a" data-filter-placeholder="Search"></ul><a class="id-modal-button msls-has-search msls-large-icon ui-btn ui-btn-up-a ui-shadow ui-btn-corner-all ui-mini ui-btn-icon-notext" tabindex="0" data-role="button" data-icon="msls-add" data-mini="true" data-iconpos="notext" data-corners="true" data-shadow="true" data-iconshadow="true" data-wrapperels="span" data-theme="a" title=""><span class="ui-btn-inner"><span class="ui-btn-text"></span><span class="ui-icon ui-icon-msls-add ui-icon-shadow"> </span></span></a></div><div class="id-auto-complete-dropdown"></div></div></div><div class="msls-clear msls-last-row msls-presenter msls-ctl-text-box msls-vauto msls-hstretch msls-leaf msls-redraw"><div class="msls-label msls-label-align-top msls-clear msls-vauto"><label for="b8bfe3adf-Level" class="ui-input-text">Level</label></div><div class="msls-clear msls-presenter-content msls-font-style-normal msls-vauto msls-hscroll"><div class="ui-input-text ui-shadow-inset ui-corner-all ui-btn-shadow ui-body-a ui-mini"><input type="text" class="id-element ui-input-text ui-body-a" data-mini="true" maxlength="255" id="b8bfe3adf-Level"></div></div></div><div class="msls-clear"></div></div>');
});
};
这一切都很好 - 但是,问题出在:新的技能框(刚刚添加到屏幕上)没有工作按钮 - css/jquery 移动按钮什么也不做。第一个仍然可以正常工作,但新的坏了。
有没有比我现在做的更好的方法?有内置的电灯开关方式吗?
编辑:所以看起来 jquery 按钮事件在其他地方的 javascript 文件中,而不是在按钮声明本身中:
http://demos.jquerymobile.com/1.2.1/docs/buttons/buttons-events.html
这意味着即使我正在创建按钮的“外观和感觉”,它们实际上还没有做任何事情。我必须弄清楚按钮调用的是哪个方法,然后使用 .bind jquery 方法将新按钮绑定到相同的方法。
【问题讨论】:
-
您能否澄清一下技能记录是否已经存在,以及您想要从人员屏幕关联现有技能(创建新的 PersonSkill 记录),而无需每次都打开 PersonSkill 屏幕?
-
是的,这绝对正确。我正在努力使用的 + 按钮会显示现有技能记录的列表,这些记录存储在不同的表中(可以预见的是,技能表)。
标签: javascript c# css jquery-mobile visual-studio-lightswitch