Каков наилучший способ привязки базы данных ASP.NET TreeView для таблицы с множеством родительских дочерних отношений - PullRequest
0 голосов
/ 18 июня 2010

У меня есть таблица с обычным ParentID, ChildID, так как это первые два столбца в самореферентной древовидной структуре данных.

Моя проблема заключается в том, что когда я вытаскиваю это и использую следующий код:

DataSet set = DA.GetNewCategories();
        set.Relations.Add(
            new DataRelation("parentChildCategories", set.Tables[0].Columns["CategoryParentID"], set.Tables[0].Columns["CategoryID"])
            );
        StringBuilder buildXml = new StringBuilder();
        StringWriter writer = new StringWriter(buildXml);
        set.WriteXml(writer);
        TreeView2.DataSource = new HierarchicalDataSet(set, "CategoryID", "CategoryParentID");
        TreeView2.DataBind();

Я получаю сообщение об ошибке:

These columns don't currently have unique values

Я считаю, что это потому, что мои данные имеют дочерние элементы с несколькими родительскими узлами.Это хорошо для моего приложения - я не против, если одна строка данных отображается в нескольких узлах моего TreeView.

Может ли кто-нибудь пролить свет на это, пожалуйста?Не кажется необоснованным иметь XML-рендеринг DataSet, в котором узлы появляются в нескольких местах, но я не могу понять, как это сделать.

Спасибо,

Мэтт.

1 Ответ

0 голосов
/ 18 июня 2010

У вас может быть третий столбец в вашей таблице, в котором есть (parentID + "_" + categoryId), а затем использовать этот столбец в HierarchicalDataSet. Это будет уникальным для вашего дерева

А также вам нужно то же самое для родительских идентификаторов, чтобы они соответствовали идентификаторам категории

...