for (int a = 0; a < dtLine.Rows.Count; a++)
{
TreeListNode linelist = CreateNodeCore(num1 + a, "Inbox", dtLine.Rows[a][1].ToString(), "a.aspx", localFolders);//线路信息表
for (int b = 0; b < dtLineStrain.Rows.Count; b++)
{
if (dtLineStrain.Rows[b][1].ToString() == dtLine.Rows[a][1].ToString())
{//如果耐张段信息配表和线路容量历史数据有共同的线路名才输出来
TreeListNode StrainList = CreateNodeCore(num2 + b, "Outbox", dtLineStrain.Rows[b][2].ToString(), "Default11.aspx", linelist);//耐张段信息配置
for (int c = 0; c < dtLSS.Rows.Count; c++)
{
if (dtLSS.Rows[c][0].ToString() == dtLine.Rows[a][1].ToString() && dtLSS.Rows[c][1].ToString() == dtLineStrain.Rows[b][2].ToString())
{// 如果档距信息配置表和线路容量历史数据有共同的线路名 档距信息配置表和耐张段信息配表有共同的耐张段名称才输出
CreateNodeCore(num3 + c, "SentItems", dtLSS.Rows[c][2].ToString(), "Default8.aspx", StrainList);
}
}
}
}
}
for (int i = 0; i < dtDeviceName.Rows.Count; i++)
{//数据采集配置参数
CreateNodeCore(num4 + i, "DeletedItems", dtDeviceName.Rows[i][0].ToString(), "Default7.aspx", communityNode);
}
ASPxTreeList1.ExpandAll();//展开所有节点
}
TreeListNode CreateNodeCore(object key, string iconName, string text,string url, TreeListNode parentNode)
{
TreeListNode node = ASPxTreeList1.AppendNode(key, parentNode);//添加到TreeListNode数组里
node["IconName"] = iconName;//图片名
node["Name"] = text;//节点值
node["Url"] = url;//路径
return node;
}
protected string GetIconUrl(TreeListDataCellTemplateContainer container)
{
return string.Format("~/Images/Demo/MailIcons/{0}.png", container.GetValue("IconName"));//读取图片路径
//container.ResolveUrl
}
public string GetServeUrl()
{
if (text == "北南甲线")
return "~/a.aspx";
else
return "~/Default11.aspx";
//return null;
}
protected void ASPxTreeList1_CustomDataCallback(object sender, TreeListCustomDataCallbackEventArgs e)
{
string key = e.Argument.ToString();
TreeListNode node = ASPxTreeList1.FindNodeByKeyValue(key);
//string key = ASPxTreeList1.GetFocusedNodeKey();
e.Result = GetEntryText(node);
}
protected string GetEntryText(TreeListNode node)
{
if (node != null)
{
text = node["Url"].ToString();
return text;//.Trim().Replace("/r/n", "<br />");
}
return string.Empty;
}
protected void ASPxTreeList1_FocusedNodeChanged(object sender, EventArgs e)
{
//string key = e.Argument.ToString();
//TreeListNode node = ASPxTreeList1.FindNodeByKeyValue("11");
//e.Result = node;
//if (text == "北南甲线")
// Response.Redirect("a.aspx");
//else
// Response.Redirect("Default11.aspx");
}
}
//钥匙值防止重复 前面指定了根节点最小值只能从3开始
int num1 = 3;
int num2 = 3;
int num3 = 3;
int num4 = 3;
num2 = num1+ dtLine.Rows.Count+1;
num3 = num2+ dtLineStrain.Rows.Count + 1;
num4 = num3 + dtLSS.Rows.Count + 1;
后台:
<dx:ASPxTreeList ID="ASPxTreeList1" runat="server" AutoGenerateColumns="False"
Height="232px" Width="300px"
oncustomdatacallback="ASPxTreeList1_CustomDataCallback"
onfocusednodechanged="ASPxTreeList1_FocusedNodeChanged">
<Settings ShowColumnHeaders="False" />
<SettingsBehavior AllowFocusedNode="True" ExpandCollapseAction="NodeDblClick" />
<ClientSideEvents FocusedNodeChanged="function(s, e) {
var key = ASPxTreeList1.GetFocusedNodeKey();
ASPxTreeList1.PerformCustomDataCallback(key);
}" CustomDataCallback="function(s, e) {
var ssrc=e.result;
if (ssrc.length==0)
return;
parent.document.all('Iframe0').src=ssrc;
}" />
<Templates>
<DataCell>
<table cellpadding="0" cellspacing="0">
<tr>
<td>
<dx:ASPxImage ID="ASPxImage1" runat="server" Height="16"
ImageUrl="<%# GetIconUrl(Container) %>" IsPng="true" Width="16" />
</td>
<td>
</td>
<td style="padding-bottom: 1px;" mce_style="padding-bottom: 1px;">
<a><%# Container.Text %></a>
</td>
</tr>
</table>
</DataCell>
</Templates>
<Columns>
<dx:TreeListTextColumn FieldName="Name" VisibleIndex="0">
</dx:TreeListTextColumn>
</Columns>
<SettingsCustomizationWindow Enabled="True" />
</dx:ASPxTreeList>
</div>
</form>
</body>
</html>
前台:
后台方法:
public string GetServeUrl()
{
if (text == "北南甲线")
return "~/a.aspx";
else
return "~/Default11.aspx";
}
前台:
获得节点还可以这样获得
<a href="<%#Container.ResolveUrl(GetServeUrl()) %>"><%# Container.Text %><a>
这样的写法 不够犀利。
属性设置
事件设置
显示效果,查询了数据库4个不同表,组合成树