【问题标题】:How to bind Dataset to TreeView in C#.Net [duplicate]如何在 C#.Net 中将数据集绑定到 TreeView [重复]
【发布时间】:2014-01-10 11:18:32
【问题描述】:

我创建了一个包含三列的 DataTable,并且我正在使用 Data Rows 向该 DataTable 添加行。然后,我将 DataTable 添加到 DataSet。现在,我只想将 DataSet 绑定到 TreeView。

DataTable dt = new DataTable();
dt.TableName = "Tree";
dt.Columns.Add("Name");
dt.Columns.Add("Project");
dt.Columns.Add("Experience");

List<Profile> list = new List<Profile>
{
    new Profile{  Name="Boopathi", Project="NPD",       Experience=1},
    new Profile{  Name="Stephan",  Project="Luxstone",  Experience=1},
    new Profile{  Name="Sri",      Project="DellAsap",  Experience=1}
};

var query = from s in list.AsEnumerable()
            where s.Experience == 1
            select s;

DataSet ds=new DataSet();
DataRow dr = dt.NewRow();
foreach (var t in query)
{               
    dr["Name"] = t.Name;
    dr["Project"] = t.Project;
    dr["Experience"] = t.Experience;
}

ds.Tables.Add(dt);
return ds;

【问题讨论】:

  • 应该是ds.Tables.Add(dt);,否则ds中不会有任何表格。

标签: c# winforms


【解决方案1】:

试试这个

if (ds.Tables.Count > 0)
    {
        TreeNode root= new TreeNode("Root Node");
        foreach (DataRow row in ds.Tables[0].Rows)
        {
            TreeNode NewNode = new TreeNode(row["Name"].ToString());

            root.ChildNodes.Add(NewNode);
        }
    }

【讨论】:

  • 很好的答案 - 简单而有效:)
【解决方案2】:
DataTable dt=new DataTable();
    DataTable dt1 = new DataTable();
    DataSet ds = new DataSet();
    ds.Tables.Add(dt);
    ds.Tables.Add(dt1);
    ds.Relations.Add("children", dt.Columns["GSICCodeID"], dt1.Columns["GSICCodeID"]);
    if (ds.Tables[0].Rows.Count > 0)
    {
        tvSicCode.Nodes.Clear();
        Int32 i = 0;
        foreach (DataRow masterRow in ds.Tables[0].Rows)
        {
            TreeNode masterNode = new TreeNode((string)masterRow["Description"], Convert.ToString(masterRow["GSicCodeID"]));
            tvSicCode.Nodes.Add(masterNode);
            foreach (DataRow childRow in masterRow.GetChildRows("Children"))
            {
                TreeNode childNode = new TreeNode((string)childRow["SICCodeDesc"], Convert.ToString(childRow["SICCodeID"]));

                if (Convert.ToString(ds.Tables[1].Rows[i]["CarrierSICCode"]) != "")
                    childNode.Checked = true;

                masterNode.ChildNodes.Add(childNode);
                i++;
            }
        }

        tvSicCode.CollapseAll();
    }

here is a simple article also

使用 Telerik:

using System.Data.SqlClient;using Telerik.Web.UI;
namespace RadTreeView_DataBindDataTable
{    
    public partial class _Default : System.Web.UI.Page        
    {        
        protected void Page_Load(object sender, EventArgs e)                
        {                        
            if (!IsPostBack)                        
            {                               
                BindToDataTable(RadTreeView1);                        
            }               
        }        
        private void BindToDataTable(RadTreeView treeView)           
        {                   
            SqlConnection connection = new SqlConnection(Properties.Settings.Default.NwindConnectionString);        
            SqlDataAdapter adapter = new SqlDataAdapter("select CategoryID, CategoryName, Description from Categories", connection);            
            DataTable dataTable = new DataTable();        
            adapter.Fill(dataTable);        
            treeView.DataTextField = "CategoryName";                  
            treeView.DataFieldID = "CategoryID";                   
            treeView.DataValueField = "Description";                     
            treeView.DataSource = dataTable;                    
            treeView.DataBind();            
        }  
    }

}

【讨论】:

    猜你喜欢
    • 2012-12-10
    • 2013-05-18
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    相关资源
    最近更新 更多