精华内容
下载资源
问答
  • 1.原节点(假设为:S)的父级如果不等于目标节点(假设为:T)的父节点,那么发生了跨级,即非同级移动。这个判断很容易。 2.S、T是同一级的,但是S是移动到T下一级,这种情景下,移动过程中,ST的父节点是一致的...

    目的:只允许同级拖动。

    两个判断:

    1.原节点(假设为:S)的父级如果不等于目标节点(假设为:T)的父节点,那么发生了跨级,即非同级移动。这个判断很容易。

    2.S、T是同一级的,但是S是移动到T下一级,这种情景下,移动过程中,S和T的父节点是一致的,不能判断是否跨级移动,那么怎么办判断呢?

    方案1:在afterDrop事件中来判断父节点是否一致,因为移动已经完成,父节点发什么了变化,根据判断结果然后再把节点恢复回去。这种做法很low。

    方案2:在移动过程中判断S被移动到T节点的位置:T节点前、T节点后、T节点下,如果是移动到T节点下,那么禁止移动即可。

    下面贴出方案2判断方法:

            /// <summary>
            /// 获取拖动过程中的方向
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            /// <returns></returns>
            private DragInsertPosition AjustDirection(object sender, DragEventArgs e)
            {
                TreeListNode dragNode, targetNode;
                TreeList tl = sender as TreeList;
                Point p = tl.PointToClient(new Point(e.X, e.Y));
                dragNode = e.Data.GetData(typeof(TreeListNode)) as TreeListNode;
                TreeListHitInfo hit = tl.CalcHitInfo(p);
                PropertyInfo pi = typeof(TreeList).GetProperty("Handler", BindingFlags.Instance | BindingFlags.NonPublic);
                TreeListHandler handler = (TreeListHandler)pi.GetValue(tl, null);
                return handler.StateData.DragInfo.DragInsertPosition;
    
            }
    private void treeListNav_DragOver(object sender, DragEventArgs e)
            {
                TreeListNode dragNode = e.Data.GetData(typeof(TreeListNode)) as TreeListNode;
                System.Diagnostics.Debug.WriteLine("Over:" + e.Effect);
                TreeListNode targetNode;
                Point p = treeListNav.PointToClient(MousePosition);
                targetNode = treeListNav.CalcHitInfo(p).Node;
                if (targetNode == null)
                {
                    return;
                }
                FileContent tagParent = null;//拖动后的父级数据
                if (targetNode.ParentNode != null)
                {
                    tagParent = this.treeListNav.GetRow(targetNode.ParentNode.Id) as FileContent;
                }
                if (sourceParent != tagParent)//发生跨级拖动
                {
                    // MessageHelper.ShowHit("只能在同一级拖动,移动未成功。");
                    e.Effect = DragDropEffects.None;
                    return;
                }
    
                //移动到了同级子节点下
                if (AjustDirection(sender, e) == DragInsertPosition.AsChild)
                {
                    e.Effect = DragDropEffects.None;                
                    return;
                }
    
                if (e.Effect == DragDropEffects.Link)
                {
                    //     MessageHelper.ShowHit("不能移动到子集。");
                    e.Effect = DragDropEffects.None;
                }
    
    
            }

    这个确定移动方向的枚举:

    namespace DevExpress.XtraTreeList
    {
        public enum DragInsertPosition
        {
            None = 0,
            AsChild = 1,
            Before = 2,
            After = 3
        }
    }

     

    展开全文
  • 1.原节点(假设为:S)的父级如果不等于目标节点(假设为:T)的父节点,那么发生了跨级,即非同级移动。这个判断很容易。 2.S、T是同一级的,但是S是移动到T下一级,这种情景下,移动过程中,ST的父节点是一致的...

    目的:只允许同级拖动。

    两个判断:

    1.原节点(假设为:S)的父级如果不等于目标节点(假设为:T)的父节点,那么发生了跨级,即非同级移动。这个判断很容易。

    2.S、T是同一级的,但是S是移动到T下一级,这种情景下,移动过程中,S和T的父节点是一致的,不能判断是否跨级移动,那么怎么办判断呢?

    方案1:在afterDrop事件中来判断父节点是否一致,因为移动已经完成,父节点发什么了变化,根据判断结果然后再把节点恢复回去。这种做法很low。

    方案2:在移动过程中判断S被移动到T节点的位置:T节点前、T节点后、T节点下,如果是移动到T节点下,那么禁止移动即可。

    下面贴出方案2判断方法:

     

    /// <summary>
            /// 获取拖动过程中的方向
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            /// <returns></returns>
            private DragInsertPosition AjustDirection(object sender, DragEventArgs e)
            {
                TreeListNode dragNode, targetNode;
                TreeList tl = sender as TreeList;
                Point p = tl.PointToClient(new Point(e.X, e.Y));
                dragNode = e.Data.GetData(typeof(TreeListNode)) as TreeListNode;
                TreeListHitInfo hit = tl.CalcHitInfo(p);
                PropertyInfo pi = typeof(TreeList).GetProperty("Handler", BindingFlags.Instance | BindingFlags.NonPublic);
                TreeListHandler handler = (TreeListHandler)pi.GetValue(tl, null);
                return handler.StateData.DragInfo.DragInsertPosition;
    
            }
     private void treeListNav_DragOver(object sender, DragEventArgs e)
            {
                TreeListNode dragNode = e.Data.GetData(typeof(TreeListNode)) as TreeListNode;
                System.Diagnostics.Debug.WriteLine("Over:" + e.Effect);
                TreeListNode targetNode;
                Point p = treeListNav.PointToClient(MousePosition);
                targetNode = treeListNav.CalcHitInfo(p).Node;
                if (targetNode == null)
                {
                    return;
                }
                FileContent tagParent = null;//拖动后的父级数据
                if (targetNode.ParentNode != null)
                {
                    tagParent = this.treeListNav.GetRow(targetNode.ParentNode.Id) as FileContent;
                }
                if (sourceParent != tagParent)//发生跨级拖动
                {
                    // MessageHelper.ShowHit("只能在同一级拖动,移动未成功。");
                    e.Effect = DragDropEffects.None;
                    return;
                }
    
                //移动到了同级子节点下
                if (AjustDirection(sender, e) == DragInsertPosition.AsChild)
                {
                    e.Effect = DragDropEffects.None;                
                    return;
                }
    
                if (e.Effect == DragDropEffects.Link)
                {
                    //     MessageHelper.ShowHit("不能移动到子集。");
                    e.Effect = DragDropEffects.None;
                }
    
    
            }

    这个确定移动方向的枚举:

    namespace DevExpress.XtraTreeList
    {
        public enum DragInsertPosition
        {
            None = 0,
            AsChild = 1,
            Before = 2,
            After = 3
        }
    }

     

     

    转载于:https://www.cnblogs.com/yuanjiedao/p/8269164.html

    展开全文
  • 多个源节点向多个目标节点发数据

    千次阅读 2016-12-02 15:56:07
    总体思想:是通过数组给源节点和目标节点建立一个映射表,即对应的源节点指向对应的Sink节点。数据包传输的过程中通过读取包中的源节点的ID,我这里是用源节点的ID得到目标节点的ID,当然也可以直接读取包中的目标...

    实现一下有多个源节点向多个目标节点发数据,(每个源节点判断离它最近的Sink节点,然后向它发数据)

    总体思想:是通过数组给源节点和目标节点建立一个映射表,即对应的源节点指向对应的Sink节点。在数据包传输的过程中通过读取包中的源节点的ID,我这里是用源节点的ID得到目标节点的ID,当然也可以直接读取包中的目标节点的ID。进行包的传输。

     

    在这里定义了2、3、761、252这四个节点为源节点。9、288、606、1、771为Sink节点。具体效果如下。当然你还可以增加节点。

     

    具体的改动代码:wsn_global.h中

    //目标节点数量

    intGlobalSinkNum[1];

    intGlobalSrcNum[1];

    //目标节点地址和坐标

    intGlobalSinkID[801];

    intFinalGlobalSinkIDForSrcId[801];

    intGlobalSinkIDForCalculateDistance[801];

    int FinalNumID[801];

    doubleGlobalSinkX[801];

    doubleGlobalSinkY[801];

    //源节点地址和坐标

    intGlobalSrcID[801];

    doubleGlobalSrcX[801];

    doubleGlobalSrcY[801];

     

    计算的核心代码:NotifyAppSendData中

    这里是求出发包的源节点,距离它最近的目标节点的ID

    TemSrcToSinkDistance=1410;

    for(i=1 ;i<= GlobalSinkNum[0];i++)

          {

          q = sqrt((GlobalSrcX[MyID] -GlobalSinkX[GlobalSinkIDForCalculateDistance[i]])*(GlobalSrcX[MyID] -GlobalSinkX[GlobalSinkIDForCalculateDistance[i]]) +

          (GlobalSrcY[MyID] -GlobalSinkY[GlobalSinkIDForCalculateDistance[i]])*(GlobalSrcY[MyID] -GlobalSinkY[GlobalSinkIDForCalculateDistance[i]]));

    if(q<TemSrcToSinkDistance)

          {

    TemSrcToSinkDistance=q;

    FinalGlobalSinkIDForSrcId[MyID]=GlobalSinkIDForCalculateDistance[i];

    //FinalNumID[0]=i;

    }

          }

    NodeToSinkDistance= SrcToSinkDistance;

    GPSR中从包中读取了源节点的ID,我在这里通过映射表求出了Sink节点的ID。当然直接从包中读取Sink节点的ID会显得更加简洁。

     

    其它的改动与单节点多源节点的改动大同小异。在这里就不贴代码了。

    展开全文
  • jsplumb下要自动避免连线锚点和目标锚点同一节点上 建议的方案  this.jsp.bind('beforeDrop', function (conn) {  if (conn.sourceId === conn.targetId) {  return false  } else {  return true  }

    jsplumb下要自动避免连线源锚点和目标锚点在同一节点上

    建议的方案

      this.jsp.bind('beforeDrop', function (conn) {
          if (conn.sourceId === conn.targetId) {
            return false
          } else {
            return true
          }
        })


    不建议的方案

    在connection中判断之后

    self.jsp.detach(connInfo.connection)

    发现引起特别的错误,原因不详



    展开全文
  • 某客户反馈某个MongoDB Sharding集群中,各个分片节点chunk分布严重不均衡,且每天晚上迁移窗口(activeWindow)进行chunk迁移操作日志均报错失败,需要分析原因。 影响面 各分片节点数据严重倾斜,数据...
  • 某客户反馈某个MongoDB Sharding集群中,各个分片节点chunk分布严重不均衡,且每天晚上迁移窗口(activeWindow)进行chunk迁移操作日志均报错失败,需要分析原因。 影响面 各分片节点数据严重倾斜,数据...
  • 之前看到很多人遇到这个问题时候都说要注意编码,于是我将csv格式的文件用记事本打开后用UTF-8的方式保存,Gephi中导入csv文件,选择“边表格”,格式选择“UTF-8”结果如下图所示,依然错误。 确实是编码错误...
  • 要点:边中的第一个节点将是源节点,第二个节点将是目标节点,即子节点将指向其父节点。要获取子对象的父对象,我使用^{},而要获取父对象的子对象,我使用^{}。请注意,这两个函数都返回一个边列表。import ...
  • 1.将csv文件Excel中打开,并重新保存为csv。 2.将csv文件导入到sqlite,使用sqlite作为数据来源。 标准格式如下 转载于:https://www.cnblogs.com/oikoumene/p/6896701.html...
  • 网上找了份jquery的操作节点方法清单。如下: ...包装集/字串 ...目标包装集体 ...若目标包装集只匹配一个元素,则(也包括同源包装集匹配的所有元素)将被移动到...若目标包装集包含多个元素,则将保留原来的...
  • 目标包装集包含多个元素,则将保留原来的位置,但同时复制一份相同的副本到目标位置。 由此,若目标只匹配一个元素时,使用前述方法后将被删除。 B.appendTo(A) A.prepend(B) B.prependTo(A) ...
  • 构建多目标配网重构模型,该模型...某69节点配网系统测试结果表明:所用算法能够快速找到多目标配网重构模型的决策解,具有较高的搜索效率,验证了消纳分布式电源的情况下,通过网络重构能够明显改善网络的各项指标。
  • 然后就以这个网络地址端点向外发送数据包">SerialApp中 节点通过ZDO MatchReq 来帮定设备 源节点发出匹配描述符请求(请求数据包里有源节点的端点号 网络地址 ProfileID 输入输出簇 以及ClusterID) 目标节点...
  • java中的流 按流动方向可以分为输入流及输出流两种,输入流,输出流是以...按流的处理位置可分为节点处理流  节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader. 处理流:是对一个已存在的流的
  • 为了配电网分布式电源规划中更加准确合理地考虑分布式电源出力及负荷需求的不确定性,基于风电、光伏负荷的随机...以IEEE33节点配电系统为例进行了分布式电源多目标规划,仿真结果验证了所提方法的有效性优越性。
  • draggable 属性规定元素是否可拖动(链接图像默认是可拖动的。) /// true:规定元素是可拖动的,false:规定元素是不可拖动的,auto:使用浏览器的默认特性。...拖动目标上触发事件 (元素): ondragstart -...
  • 首先提出节点状态变量概念及其节点属性电源属性,此基础上建立节点状态变量-开关状态变量的线性函数关系,即开关状态线性模型;然后运用恒功率负荷线性化方法,建立基于基尔霍夫定律的电流及电压线性等式,等式...
  • 一、目标  添加一台新osd 节点,主机名ceph6 到 ceph 集群。public IP:10.6.32.25 cluster_... 2、修改主机名,每一个节点上同步hosts 文件  3、与集群时间服务器同步时间  4、添加ceph  #yum -...
  • 基于风电机会约束提出风电高估/低估置信风险功率偏差量化计算方法,并决策变量中引入变压器变比调节无功补偿容量优化,构建计及风电置信风险和源网协调运行的经济/风险多目标优化调度模型。提出一种基于可行性...
  • Ggs软件是一种基于日志的结构化数据复制软件,它通过解析数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现数据库与目标数据库同步。Ggs 可以异构的IT基础结构(包括几乎...
  • 在源代码的注解中,NSA引用了Tor目录服务器的IP地址——目录服务器充当了Tor网络的核心控制点,跟踪更新正在运行的Tor中 继节点,在中国它早被屏蔽了。源代码显示,位于柏林纽伦堡的两台目录服务器是X...
  • 一个集群中有4主4从,假设为M1+S1,M2+S2,M3+S3,M4+S4。每个master节点有4096 slots。现在要将M4从集群中删掉。...输入要移动的slots是1365(平均),然后选好一个目标,比如M1,肯定是M4,一路执行完...
  • 11gR2 单节点迁移至RAC

    2015-07-20 11:27:57
    操作步骤:确保目标环境与环境11.2.0.4一致1.安装clusterware asm 实例2.备份库包括pfile,并将备份集copy到rac 节点上(或是备分至共享存储上)3.修改初始化参数文件,rac上还原控制文件数据文件 注:...
  • 本项目中各个节点和树莓派的通信不区分信道,因此如果由树莓派发送给特定节点的数据会被所有节点接收到,因此子节点可以判别该数据是否发给自己的,需要数据的第二个字节中加入目标节点的编号(第一个字节为源节点...
  • 综合考虑互动负荷对系统运行成本潮流分布的影响,建立了以运行成本网损最小为目标的含风电场电力系统多目标优化调度模型,并引入模糊理论将多目标优化问题转化为单目标优化问题进行求解,从而使发电侧用电侧均...
  • 客户反馈2台虚拟机热...虚拟机热迁移的过程,在源节点和目标节点会有同步虚拟机内存的操作,查看stuck日志之前的输出,问题memory 基本0% remaining,问题应该在最后一刻同步内存。于是尝试使用nova live-migrat...
  • 本示例是从一个节点上读取文件,并通过调用接口将文件传输另一个节点上,并存储数据库 思路是从服务器上下载时要将文件流存储到一个临时文件里,然后将临时文件读取为base64的转码,将base64的转码发送到目标...
  • 静态规划的基础上,考虑电源、网架储能的动态运行特征,将非水可再生能源发电量占比作为约束条件以提高模型的适用性。采用多面体集合刻画非水可再生能源负荷的不确定性,建立满足非水可再生能源发电量占比目标...
  • 0. 前言 ROS 中,节点的编写语言通常只有 C++ Python,C++ 需要编译后才能运行,Python 则无需编译。我们知道 Linux 平台编译 C++ 文件,需要编译器链接器,其中编译器是将代码编译成目标代码,链接器是将...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 521
精华内容 208
关键字:

在源节点和目标节点