Sim*_*ser 3 asp.net-mvc dynatree
有没有人有任何使用Dynatree插件与MVC的例子?我一直在与它搏斗,没有太大进展.我有一个动作方法,它返回一个JsonResult(但选择基础表中的所有列,不知道这是否是问题),在我的initajax调用中,我正在做的就是调用这个方法.
如果不是太麻烦,我正在寻找示例View和Controller动作方法.
在此先感谢您的帮助
您需要创建一个对象来序列化节点,例如.
public interface ITreeItem
{
}
/// <summary>
/// Tree Item Leaf.
/// </summary>
public class TreeItemLeaf :ITreeItem
{
/// <summary>
/// Gets the Title.
/// </summary>
public string title;
/// <summary>
/// Gets the Tooltip.
/// </summary>
public string tooltip;
/// <summary>
/// Gets the key.
/// </summary>
public string key;
/// <summary>
/// Gets the Data.
/// </summary>
public string addClass;
/// <summary>
/// Gets the Children.
/// </summary>
public IList<ITreeItem> children;
/// <summary>
/// Gets the rel attr.
/// </summary>
public string rel;
/// <summary>
/// Gets the State.
/// </summary>
public bool isFolder;
/// <summary>
/// Gets the State.
/// </summary>
public bool isLazy;
/// <summary>
/// Initializes a new instance of the <see cref="TreeItemLeaf"/> class.
/// </summary>
public TreeItemLeaf()
{
children = new List<ITreeItem>();
}
/// <summary>
/// Initializes a new instance of the <see cref="TreeItemLeaf"/> class.
/// </summary>
/// <param name="type">The type of node.</param>
/// <param name="id">The Id of the node.</param>
/// <param name="title">The Title of the node.</param>
/// <param name="tooltip">The Tooltip of the node.</param>
public TreeItemLeaf(String type, Guid id, String title, String tooltip)
{
key = id.ToString();
this.title = title;
isFolder = false;
isLazy = false;
this.tooltip = tooltip;
children = new List<ITreeItem>();
}
}
/// <summary>
/// Tree Item.
/// </summary>
public class TreeItem : TreeItemLeaf
{
/// <summary>
/// Gets the State.
/// </summary>
public new bool isFolder;
/// <summary>
/// Initializes a new instance of the <see cref="TreeItem"/> class.
/// </summary>
public TreeItem() : base()
{
}
/// <summary>
/// Initializes a new instance of the <see cref="TreeItem"/> class.
/// </summary>
/// <param name="type">The type of node.</param>
/// <param name="id">The Id of the node.</param>
/// <param name="title">The Title of the node.</param>
/// <param name="tooltip">The tooltip of the node.</param>
public TreeItem(String type, Guid id, String title, String tooltip) : base(type, id, title, tooltip)
{
isFolder = true;
isLazy = true;
}
}
Run Code Online (Sandbox Code Playgroud)
一旦你有了这个,你可以返回一个Json(IList<ITreeItem>)你需要从你的结果中建立起来的东西.
如果您访问Dynatee演示http://wwwendt.de/tech/dynatree/doc/samples.html,您可以使用Firefox/Firebug来研究HTTP请求,以确切了解传入和返回的内容.
我视图中的树如下:
// --- Initialize first Dynatree -------------------------------------------
$("#tree").dynatree({
fx: { height: "toggle", duration: 500 },
selectMode: 1,
clickFolderMode: 1,
children : @Html.Raw(String.Format("{0}", ViewData["tree"]).Replace("\"children\":[],", "")),
onLazyRead: function (node) {
node.appendAjax({
url: "@Url.Action("treedata", "tree")",
type: "GET",
data: { "id": node.data.key, // Optional url arguments
"mode": "all"
},
error: function(node, XMLHttpRequest, textStatus, errorThrown) {
}
}
});
}, //.... cut short for brevity
Run Code Online (Sandbox Code Playgroud)
我在"children:"部分嵌入了初始树状态.Ajax读取正在"onLazyRead:"部分中设置.
我的Ajax调用是:
public JsonResult TreeData(FormCollection form)
{
return GetTreeData(Request.QueryString["id"], Request.QueryString["uitype"]);
}
Run Code Online (Sandbox Code Playgroud)
GetTreeData()函数返回Json(ITreeItem);
我建议你使用Firefox/Firebug及其"NET"功能来查看将要发生的事情.
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
5994 次 |
| 最近记录: |