Введение: жил я раньше убого и всю работу делал в кодбихайнде, но потом дошло, как прекрасна система работы с данными в .NET, стал работать с источниками данных, радовался долго, но сейчас уткнулся носом в проблемму.
Не уж то в дотнете нет источника данных для работы с древовидными структурам?
Сразу напрашивается "как же нет, есть — вон они и xmldatasource и сайтмап и даже абстрактный HierarchicalDataSourceControl". Однако проанализировав это все, особенно последний, я ршения не нашел.
Все на что они способны: организовать навигацию и отредактировать xml'ку. А как реализовать банальный каталог товаров? Напрашивается опять ответ HierarchicalDataSourceControl. НО как не искал не нашел в нем способа редактирования данных. Все, что нашел
это.
Задача то банальна: без кодбихайнда отредактировать древовидную структуру — на каждом втором проекте встает сей вопрос. Я уже смирился с судьбой писать этот датасурс, но и это не помогло — не хватает редактирования (или моего понимания этого редактирования) чтобы полностью инкапсулироваться за датасурс.
По сему два философских вопроса к сообществу:
1) Есть ли придусмотренный микрософтом способ управления древовидными структурами? кроме xml.
2) Как вы подходите к этой задаче?
И один практический:
Мой реализованный датасурс соглашается биндить только ToString() объектов, а как сделать чтобы биндились паблик свойства?
Объект:
public class HPage : IHierarchyData
{
public Guid Id;
public Guid Parent;
public string Title;
public Guid Master;
public int Priority;
private string path;
...
public object Item
{
get { return this; }
}
public override string ToString()
{
return this.Title;
}
}
байндю в тривью так:
<asp:TreeNodeBinding DataMember="efe.HPage" ValueField="Priority" />
или так:
<asp:TreeNodeBinding DataMember="efe.HPage" ValueField="Id" />
одна и та же ошибка:
Could not bind to the 'Priority' property (specified by ValueField) while data binding TreeView. Please check the Bindings fields.
У меня есть предположение, что возможно чтобы обьект стал данными надо или интерфейс какой-то описать или как то выделить свойства — данные, но как?