控制一些项目的位置,而其余的可以排序
Controlling the Position of some items whilst the remainder can be sorted
我有一个ModelAdmin
与MyDataObject
has_many AnotherDataObject
和SilverStripe网格字段扩展模块,控制
class TestAdmin extends ModelAdmin {
static $managed_models = array('MyDataObject');
static $url_segment = 'testadmin';
static $menu_title = 'TestAdmin';
}
class MyDataObject extends DataObject {
private static $db = array('Name' => 'Varchar(255)');
private static $has_many= array('AnotherDataObjects' => 'AnotherDataObject');
function getCMSFields() {
$fields = parent::getCMSFields();
if ($grid = $fields->dataFieldByName('AnotherDataObjects')) {
$grid->getConfig()
->removeComponentsByType('GridFieldAddExistingAutocompleter')
->addComponent(new GridFieldOrderableRows('Priority'));
$fields->removeByName('AnotherDataObjects');
$fields->insertAfter($grid,'Name');
}
return $fields;
}
}
class AnotherDataObject extends DataObject {
private static $db = array(
'Name' => 'Varchar(255)',
'Type' => "Enum('Middle,Top,End','Middle')",
'Priority' => 'Int'
);
private static $has_one = array('MyDataObject' => 'MyDataObject');
function onBeforeWrite() {
parent::onBeforeWrite();
if($this->Type == 'Top')
$this->Priority = DB::query("SELECT MIN(Priority) FROM Type = 'Top'")->value();
if($this->Type == 'End')
$this->Priority = DB::query("SELECT MAX(Priority) FROM AnotherDataObjectWHERE Type = 'End'")->value() + 1;
}
}
我想在AnotherDataObject
上使用Type
来控制排序顺序,以便Top项目保持在顶部,然后在末尾结束。我认为最简单的方法是防止玩家"掉入"或"掉入"这些位置,并控制onBeforeWrite
中Top/End项目的优先级。但我不确定如何禁用那些从"拖放"…或者是否有更好的方法?
您需要重写jQuery UI可排序初始化:
$(".ss-gridfield-orderable tbody").entwine({
onadd: function() {
// skipped code
// the `cancel` option allows to exclude items from drag&drop sorting
this.sortable({
handle: ".handle",
helper: helper,
opacity: .7,
update: update,
cancel: ".ui-state-nosort"
});
},
});
你需要添加新的类'。
相关文章:
- 如何在智能表中按日期对项目进行排序
- 按不同项目对对象数组进行排序
- 在Javascript中,当使用array.prush方法向列表中添加项目时,如何对其进行排序
- 我在页面中使用的jQuery UI可排序项目;不起作用
- 如何在角度js的自动完成下拉列表中对项目列表(按字母顺序)进行排序
- Jquery UI可排序,自动移动项目
- 对选定的排序项目应用不同的颜色
- 获取项目的顺序 jQuery 可排序并设置它们的顺序
- 在可排序的JQuery UI列表中至少保留一个项目
- 可拖动和可排序项目编号在更改时更新
- 限制可放置jqueryui可排序项目的区域
- 可以't获取排序项目的数组以在屏幕上显示结果
- 使可排序项目也可丢弃
- 如何在Javascript中排序项目类别
- jQuery排序
- 试图从我的json在Javascript中排序项目
- 在两个列表中重新排序项目
- jQueryUI可排序项目在拖动时位置不正确
- HTML表格与rowspan重新排序项目拖放问题
- 如何在backbone.js中排序项目