【发布时间】:2013-11-22 13:36:52
【问题描述】:
我是 jsPlumb 的新手。我通过从数据库中读取表创建了动态 div,并使用 JsPlumb 连接器连接了这些 div。 div 已被制成可拖动的。页面加载时连接器正确显示,但是当我拖动或移动 div 时,连接器断开并移动到顶部。如果我创建一个不是来自数据库的静态 div,则连接器工作正常,当我拖动/移动 div 时,连接器也会沿着连接到源和目标 div 的 div 移动。
在谷歌上进行完整搜索并浏览 jsPlumb 文档后,我没有找到任何解决方案。
谁能告诉我应该怎么做才能让连接器保持连接到源和目标,即使我们拖动或移动 div 也是如此。
这是我所做的:
一个连接的JsPlumb代码:
jsPlumb.ready(function() {
jsPlumb.connect({
source: "FDiv1",
target: "IDiv1",
connector: ["Flowchart"],
anchors: ["RightMiddle", "LeftMiddle"],
paintStyle: {
lineWidth: 2,
strokeStyle: "rgb(189, 11, 50)",
outlineColor: "#666",
outlineWidth: 1
},
hoverPaintStyle: { strokeStyle: "#7ec3d9" },
detachable: false,
endpoint: "Blank",
endpointsOnTop: false,
deleteEndpointsOnDetach: false,
endpointStyle: { fillStyle: "#a7b04b" },
overlays: [ "Arrow" ]
});
jsPlumb.draggable($(".bg"));
});
我在这里对源和目标进行了硬编码,稍后我应该动态获取它们以连接所有其他 div。
这是后面代码中的动态div代码。
foreach(ds.Tables[0].Rows 中的 DataRow dt) {
HtmlGenericControl myDiv = new HtmlGenericControl("div");
HtmlGenericControl myDiv2 = new HtmlGenericControl("div");
//********Source Div**************
myDiv.ID = "FDiv" + j;
myDiv.Attributes.Add("class", "bg");
myDiv.Style.Add(HtmlTextWriterStyle.MarginLeft, "30px");
myDiv.Style.Add(HtmlTextWriterStyle.MarginTop, top + "px");
myDiv.InnerHtml = "Filename: " + dt["Column1"].ToString() + "<br>" + myDiv.ID;
PlaceHolder1.Controls.Add(myDiv);
//************Target Div****************
myDiv2.ID = "IDiv" + j;
myDiv2.Attributes.Add("class", "bg");
myDiv2.Style.Add(HtmlTextWriterStyle.MarginLeft, "260px");
myDiv2.Style.Add(HtmlTextWriterStyle.MarginTop, top + "px");
myDiv2.InnerHtml = "Filename: " + dt["Column2"].ToString() + "<br>" + myDiv2.ID;
PlaceHolder1.Controls.Add(myDiv2);
top = top + 140;
j = j + 1;
}
【问题讨论】: