如何使用Teleriks RadTreeView控件将AppendDataBoundItems附加到特定节点?

时间:2011-09-16 16:51:53

标签: data-binding telerik radtreeview

Teleriks RadTreeView控件上的AppendDataBoundItems属性允许您将数据与静态值绑定。

所以你的树可能看起来像

  • 静态项目A
  • 静态项目B
  • 静态项目C
  • 数据绑定项目A
  • 数据绑定项目B
  • 数据绑定项目C

但是我希望在特定节点下拥有所有绑定值,例如

  • 静态项目A
  • 静态项目B
  • 静态项目C.
    • 数据绑定项目A
    • 数据绑定项目B
    • 数据绑定项目C

我意识到我可以操纵数据来实现这种效果,但我不习惯将UI代码移动到我的存储过程中。

还有其他办法吗?

2 个答案:

答案 0 :(得分:1)

我希望存储过程将您的数据返回到您将要绑定到树视图的数据集中。一旦获得数据集,我将操纵数据集中保存的数据并将修改后的数据集绑定到树视图。存储的proc仍然会返回你的数据绑定数据,然后你就是在玩中间人。

答案 1 :(得分:0)

我开始认为这是不可能的,所以我只是自己添加了这些项目。

为了将来参考任何寻找如何做到这一点的人,这里是手动方式。

Default2.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default2.aspx.cs" Inherits="TelerikTreetoProc._Default2" %>
<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %>
<!DOCTYPE html PUBLIC "-//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 runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="scriptManager1" runat="server" />
        <telerik:RadTreeView ID="treeSideBarCommands" Runat="server">
            <Nodes>
                <telerik:RadTreeNode runat="server" Text="Static Item A" />
                <telerik:RadTreeNode runat="server" Text="Static Item B" />
                <telerik:RadTreeNode runat="server" Text="Static Item C"/>
            </Nodes>
        </telerik:RadTreeView>
    </div>
    </form>
</body>
</html>

我的代码隐藏文件是

using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.Configuration;
using Telerik.Web.UI;

namespace TelerikTreetoProc
{
    public partial class _Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string sql = "select EmployeeID, FirstName + LastName [name] from Employees";
            string connString = WebConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
            using(var cn = new SqlConnection(connString ))
            using(var cmd = new SqlCommand( sql, cn))
            {
                cn.Open();
                cmd.CommandType = CommandType.Text;
                SqlDataReader dr = cmd.ExecuteReader();
                RadTreeNode nd = treeSideBarCommands.Nodes[2];
                while (dr.Read())
                {
                    nd.Nodes.Add(new RadTreeNode(dr[1].ToString(), dr[0].ToString()));
                }
            }
        }
    }
}