入图:
有两个文件: TreeComboField.js,TreeComboField.cs
打开 CooliteToolkit 原代码工程
文件放置路径:
1 \Coolite.Ext.Web\Ext\TreeComboField.cs
2 \Coolite.Ext.Web\Build\Resources\Coolite\ux\extensions\ComboTree\TreeComboField.js
注意:在编译工程要把TreeComboField.js文件的属性设置为“嵌入资源”。
测试页面代码:
<%@ Page Lang ge="C#" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
<!DOCTYPE html P LIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>TreePanel with Async TreeLoader using Page - Coolite Toolkit Examples</title>
<link href="http://www.cnblogs.com/http://www.cnblogs.com/resources/css/examples.css"
rel="stylesheet" type="text/css" />
<script runat="server">
protected void NodeLoad(object sender, NodeLoadEventArgs e)
{
string prefix = e.ExtraParams["prefix"] ?? "";
if (!string.IsNullOrEmpty(e.NodeID))
{
for (int i = 1; i < 6; i++)
{
AsyncTreeNode asyncNode = new AsyncTreeNode();
asyncNode.Text = prefix + e.NodeID + i;
asyncNode.NodeID = e.NodeID + i;
e.Nodes.Add(asyncNode);
}
for (int i = 6; i < 11; i++)
{
Coolite.Ext.Web.TreeNode treeNode = new Coolite.Ext.Web.TreeNode();
treeNode.Text = prefix + e.NodeID + i;
treeNode.NodeID = e.NodeID + i;
treeNode.Leaf = tr;
e.Nodes.Add(treeNode);
}
}
}
/// <summary>
/// 因为不知道怎么从服务器端获取自定义属性的值,所以只能获取树节点的Text
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void OutVal(object sender, AjaxEventArgs e)
{
string ss = this.TreeComboField.LastSelectionText; //自定义属性的值
string tt = this.TreeComboField.Val.ToString();
Ext.Msg.Alert("节点信息", string.Format("treeId:{0},treeText:{1}", ss, tt)).Show();
}
</script>
</head>
<script type="text/javascript">
//通过javaScript可以获取树节点的Text和树节点的Id
function JavaScriptOutVal() {
Ext.Msg.alert("节点信息",String.format("treeId:{0},treeText:{1}",TreeComboField.getVal(), TreeComboField.lastSelectionText));
}
</script>
<body>
<form id="form1" runat="server">
<div align=center>
<br />
<ext:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Debug" />
<div align=left>
<ext:TreeComboField ID="TreeComboField" Width=200 FieldLabel="TreeComboField" runat="server" Height="300">
<Tree>
<ext:TreePanel ID="TreePanel2" runat="server" Title="Tree" AutoHeight="tr" Border="tr">
<Loader>
<ext:PageTreeLoader OnNodeLoad="NodeLoad">
<BaseParams>
<ext:Parameter Name="prefix" Val="10" Mode="Raw" />
</BaseParams>
</ext:PageTreeLoader>
</Loader>
<Root>
<ext:AsyncTreeNode NodeID="0" Text="Root" />
</Root>
</ext:TreePanel>
</Tree>
</ext:TreeComboField>
<br />
<ext:Button ID="AjaxEvents" runat="server" Text="AjaxEvents">
<AjaxEvents>
<Click OnEvent="OutVal">
</Click>
</AjaxEvents>
</ext:Button>
<br />
<ext:Button ID="JavaScript" runat="server" Text="JavaScript">
<Listeners>
<Click Handler="JavaScriptOutVal();" />
</Listeners>
</ext:Button>
</div> </div>
</form>
</body>
</html>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
<!DOCTYPE html P LIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>TreePanel with Async TreeLoader using Page - Coolite Toolkit Examples</title>
<link href="http://www.cnblogs.com/http://www.cnblogs.com/resources/css/examples.css"
rel="stylesheet" type="text/css" />
<script runat="server">
protected void NodeLoad(object sender, NodeLoadEventArgs e)
{
string prefix = e.ExtraParams["prefix"] ?? "";
if (!string.IsNullOrEmpty(e.NodeID))
{
for (int i = 1; i < 6; i++)
{
AsyncTreeNode asyncNode = new AsyncTreeNode();
asyncNode.Text = prefix + e.NodeID + i;
asyncNode.NodeID = e.NodeID + i;
e.Nodes.Add(asyncNode);
}
for (int i = 6; i < 11; i++)
{
Coolite.Ext.Web.TreeNode treeNode = new Coolite.Ext.Web.TreeNode();
treeNode.Text = prefix + e.NodeID + i;
treeNode.NodeID = e.NodeID + i;
treeNode.Leaf = tr;
e.Nodes.Add(treeNode);
}
}
}
/// <summary>
/// 因为不知道怎么从服务器端获取自定义属性的值,所以只能获取树节点的Text
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void OutVal(object sender, AjaxEventArgs e)
{
string ss = this.TreeComboField.LastSelectionText; //自定义属性的值
string tt = this.TreeComboField.Val.ToString();
Ext.Msg.Alert("节点信息", string.Format("treeId:{0},treeText:{1}", ss, tt)).Show();
}
</script>
</head>
<script type="text/javascript">
//通过javaScript可以获取树节点的Text和树节点的Id
function JavaScriptOutVal() {
Ext.Msg.alert("节点信息",String.format("treeId:{0},treeText:{1}",TreeComboField.getVal(), TreeComboField.lastSelectionText));
}
</script>
<body>
<form id="form1" runat="server">
<div align=center>
<br />
<ext:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Debug" />
<div align=left>
<ext:TreeComboField ID="TreeComboField" Width=200 FieldLabel="TreeComboField" runat="server" Height="300">
<Tree>
<ext:TreePanel ID="TreePanel2" runat="server" Title="Tree" AutoHeight="tr" Border="tr">
<Loader>
<ext:PageTreeLoader OnNodeLoad="NodeLoad">
<BaseParams>
<ext:Parameter Name="prefix" Val="10" Mode="Raw" />
</BaseParams>
</ext:PageTreeLoader>
</Loader>
<Root>
<ext:AsyncTreeNode NodeID="0" Text="Root" />
</Root>
</ext:TreePanel>
</Tree>
</ext:TreeComboField>
<br />
<ext:Button ID="AjaxEvents" runat="server" Text="AjaxEvents">
<AjaxEvents>
<Click OnEvent="OutVal">
</Click>
</AjaxEvents>
</ext:Button>
<br />
<ext:Button ID="JavaScript" runat="server" Text="JavaScript">
<Listeners>
<Click Handler="JavaScriptOutVal();" />
</Listeners>
</ext:Button>
</div> </div>
</form>
</body>
</html>
代码中的 “u e” 全都被自动替换成 “” 请自己替换回来。
TreeComboField.js,TreeComboField.cs 代码放在 CooliteToolkit(v8.0)用TriggerField封装的TreeComboField控件(2)中