Привязка C # Windows Form TreeView из базы данных - PullRequest
0 голосов
/ 03 марта 2011

Структура моей базы данных выглядит следующим образом:

ID (первичный ключ), заголовок (Nvarchar), ParentID (это идентификатор текущей таблицы)

и 'ParentID' первого узла (root) имеет значение = -1 я загрузил эти данные в память. (например, в списке классов) Как я могу добавить элементы с циклом или что-то еще в TreeView?

Ответы [ 3 ]

2 голосов
/ 03 марта 2011

Просто закажите ваши данные по ParentID, первые результаты будут корневыми (-1).Затем используйте

        if (ParentID == -1)
        {
            treeView1.Nodes.Add(ID, Title);
        }
        else
        {
           TreeNode tn = treeView1.Nodes.Find(ID, true)[0];
           tn.Nodes.Add(ID, Title);
        }

, чтобы убедиться, что все предыдущие узлы уже есть в дереве, и найти их по уникальному ключу (ID).

0 голосов
/ 03 марта 2011

Я написал этот код:

  private void Heading_Load(object sender, System.EventArgs e)
{
    InsertNodes(null, 0);
}
private void InsertNodes(TreeNode n, int hdrID)
{
    System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=Acounting;Integrated Security=True;Pooling=False");
    con.Open();
    SqlCommand cmd = new SqlCommand("SELECT hdrid,title FROM [Heading] WHERE ParentID=" + hdrID, con);
    SqlDataReader rdr = cmd.ExecuteReader();
    while (rdr.Read()) {
        TreeNode t = new TreeNode(rdr("title").ToString());
        InsertNodes(t, Convert.ToInt16(rdr("hdrID").ToString()));
        if (n == null) {
            trvHeader.Nodes.Add(t);
        } else {
            n.Nodes.Add(t);
        }
    }
    rdr.Close();
         }

как это?

0 голосов
/ 03 марта 2011

Вы можете зациклить данные и создать TreeNodes , который содержит данные, которые вы хотите отобразить.Вы также можете создавать родительские узлы по своему усмотрению (при необходимости).

Затем вы можете добавить триоды в коллекцию узлов древовидного представления.

...