小编Luk*_*uke的帖子

如果使用不同列选择多行,则SelectedItem为空

我有一个TableViewSelectionMode.MULTIPLE.使用ListChangeListener我能够捕获多行的选择(按下Shift).

但是,只有在同一列没有列的区域中选择项目时,我的解决方案才有效.用4个例子说明的Gif:

  1. OK:Shift在State列中选择3项
  2. OK:Shift在Idx列中选择4个项目
  3. OK:使用Shift从State列开始到没有列的区域选择4个项目
  4. 错误:尝试使用" Shift状态"列从"数据项"列开始选择4个项目

选择不同列中的多个项目

问题似乎是SelectedItems-list在上一个例子中显然是空的.我真的很感谢你对这个问题的帮助.

这是我的方法:

ObservableList<DataRowModel> dataRows = FXCollections.observableArrayList();
dataRows.addAll(dataSetModel.getRows());
tableDataRow.setItems(dataRows);
tableDataRowStateColumn.setCellValueFactory(f -> f.getValue().getState());

tableDataRow.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
tableDataRow.getSelectionModel().getSelectedItems()
.addListener((ListChangeListener.Change<? extends DataRowModel> c) -> {
    while (c.next()) {
        c.getRemoved().stream().forEach(remitem -> remitem.setSelected(false));
        c.getAddedSubList().stream().forEach(additem -> additem.setSelected(true));
        System.out.println(c.getList()); //Empty [] when selected using different columns
    }
});
Run Code Online (Sandbox Code Playgroud)

只是为了更好地理解我的代码:setSelected(...)设置一个绑定到State-Column的BooleanPropertymy DataRowModel.

没有上下文,使用这个选定属性的原因似乎很愚蠢.但是,还有各种其他代码片段,其中ChangeListeners绑定到selected-property.

SSCCE准备好运行:

import javafx.application.Application;
import javafx.beans.property.BooleanProperty;
import …
Run Code Online (Sandbox Code Playgroud)

java javafx java-8 javafx-8

7
推荐指数
1
解决办法
188
查看次数

实体框架6深度复制/克隆具有动态深度的实体

我正在尝试深度克隆/复制包含相同类型的子项目的实体项目.Item也有参数,也应该克隆.但是,ItemType应保留为对现有ItemType的引用.

插图图: 在此输入图像描述

在Stackoverflow(实体框架5深度复制/克隆实体)的帮助下,我提出了以下相当糟糕的尝试:

public Item DeepCloneItem(Item item)
{
    Item itemClone = db.Items //Level 1
        .Include(i => i.ChildrenItems.Select(c => c.ChildrenItems )) //3 Levels
        .Include(i => i.Parameters) //Level 1 Params
        .Include(i => i.ChildrenItems.Select(c => c.Parameters)) //Level 2 Params
        .Include(i => i.ChildrenItems.Select(c => c.ChildrenItems
            .Select(cc => cc.Parameters))) //Level 3 Params
        .AsNoTracking()
        .FirstOrDefault(i => i.ItemID == item.ItemID);
    db.Items.Add(itemClone);
    db.SaveChanges();
    return itemClone;
}
Run Code Online (Sandbox Code Playgroud)

对于固定的深度等级3,这种尝试就像一个魅力.但是,正如您所看到的,对于每个更深层次而言,这并不是很好.该设计允许无限数量的嵌套(但在我的上下文中,不应超过5个级别).

是否有可能根据最大深度动态添加包含到IQueryable?

这是要克隆的Item-entity:

public class Item
{
    public int ItemID { get; set; }

    public int? ParentItemID { get; set; …
Run Code Online (Sandbox Code Playgroud)

.net c# linq entity-framework entity-framework-6

7
推荐指数
1
解决办法
4684
查看次数